1 de la presentación dice "¡Estos métodos son PEREZOSOS!"¡La mayoría de los métodos Iteradores e Iterables son LAZY! ¿Qué significa esto?
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>)
Puede alguien ayudarme a entender lo que quieren decir con esto, digamos que tengo una colección de Persons
y aplico un filtro para volver sólo las personas cuyo apellido es DOE.
¿Significa esto que el "filtrado ocurre solo en la primera llamada a doeOnly.next()?"
List<Person> persons= ....
Iterable doeOnly= Iterables.filter(persons,DOE_AS_LAST_NAME_PREDICATE);
El filtrado debe ocurrir en la primera llamada a 'doeOnly.hasNext()' not 'next()', porque si solo queda un elemento pero falla el predicado, 'hasNext()' debe devolver falso, pero el el filtro no lo sabe hasta que haya obtenido el elemento no coincidente. – finnw