我需要一些关于 Iterable<T>
用法的建议在 Java 中。
我有以下类(class):
public abstract class Validator implements Comparable<Validator>{
public abstract boolean validate();
public abstract int getPriority();
@Override
public int compareTo(Validator o) {
return getPriority() > o.getPriority() ? -1 :
getPriority() == o.getPriority() ? 0 :
1;
}
}
我需要创建一个类 ValidatorChain
如下:
public class ValidatorChain{
//Contains Collection<Validator>
// and we can iterate over it with for-each loop in high-to-low priority order
}
也许我应该重写 Iterable<T>
的一些即时实现而不是从头开始编写我自己的。
最佳答案
您可以通过委托(delegate)给集合的迭代器以一种简单的方式手动编写它:
public class ValidatorChain implements Iterable<Validator> {
Collection<Validator> validators = ...;
public Iterator<Validator> iterator() {
return validators.iterator();
}
}
如果您需要对其进行排序,您可以对 validators
集合进行排序或复制一份:
public Iterator<Validator> iterator() {
List<Validator> sorted = new ArrayList<> (validators);
Collections.sort(sorted);
return sorted.iterator();
}
或者使用 Java 8:
public Iterator<Validator> iterator() {
return validators.stream().sorted().collect(toList()).iterator();
}
关于java - 在那种情况下我真的需要实现迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544589/