演示文稿中的第一部分说:“这些方法是懒惰的!”
Iterable transform(Iterable, Function)*
Iterable filter(Iterable, Predicate)*
T find(Iterable<T>, Predicate)
Iterable concat(Iterable<Iterable>)
Iterable cycle(Iterable)
T getOnlyElement(Iterable<T>)
Iterable<T> reverse(List<T>)
有人能帮我理解这句话的意思吗?比如说,我有一个Persons
集合,并对其应用过滤器,以仅返回其姓为DOE的人。
那么这是否意味着“过滤仅在第一次调用doeOnly.next()
时发生”?
List<Person> persons= ....
Iterable doeOnly= Iterables.filter(persons,DOE_AS_LAST_NAME_PREDICATE);
doeOnly.hasNext()
而不是next()
上进行,因为如果只剩下一个元素但它未通过谓词,则hasNext()
必须返回 false,但是过滤器在获取非匹配元素之前不知道这一点。 - finnw