普通的 Java 迭代器只是迭代集合的每个元素。因此,您必须在每次迭代时自己检查值。
您编写的内容可以使用Apache Commons CollectionsFilterIterator
中的类来完成。
来自 JavaDoc:
这个迭代器装饰了底层迭代器,只允许通过那些匹配指定的元素Predicate
。
这是一个帮助您入门的示例:
// Create a predicate class, like this:
class MyAwesomePredicate implements Predicate {
@Override
public boolean evaluate(Object object) {
// If the condition is satisfied, return true.
// Return false otherwise.
}
}
// and pass it to the FilterIterator:
Iterator<SomeClass> matchingObjects =
new FilterIterator(myCollection.iterator(), new MyAwesomePredicate());
// Now iterate the maching objects:
while (machingObjects.hasNext() {
// do your stuff
}
更新:如果您愿意,还有Iterators#filter(Iterator<T>, Predicate<? super T>)
来自Guava的。与 Apache Commons 不同,它支持泛型,并且(可以说)更高的酷度因子。