【发布时间】:2014-08-24 16:05:05
【问题描述】:
Guava Iterators.any 方法文档提到此调用将返回一个或多个满足谓词的元素。这是否意味着即使第一个元素满足,该谓词也会针对迭代器中的所有元素运行条件 ?
类迭代器
"如果迭代器返回的一个或多个元素满足给定的谓词,则返回 true。"
【问题讨论】:
标签: java collections iterator guava
Guava Iterators.any 方法文档提到此调用将返回一个或多个满足谓词的元素。这是否意味着即使第一个元素满足,该谓词也会针对迭代器中的所有元素运行条件 ?
类迭代器
"如果迭代器返回的一个或多个元素满足给定的谓词,则返回 true。"
【问题讨论】:
标签: java collections iterator guava
Iterators.any来源:
647 public static <T> boolean any(
648 Iterator<T> iterator, Predicate<? super T> predicate) {
649 checkNotNull(predicate);
650 while (iterator.hasNext()) {
651 T element = iterator.next();
652 if (predicate.apply(element)) {
653 return true;
654 }
655 }
656 return false;
657 }
这是一个普通的迭代器。
它将迭代,直到找到一个可以用于谓词的元素。当它因为return true; 而完成时,这意味着至少一个元素满足条件,但可能发生其他元素也满足条件而无需检查。 (这是Returns true if one or more 部分)
但如果没有人满足条件,它将返回 false,因为没有人停止迭代器。
【讨论】: