1 của bản trình bày cho biết "Các phương pháp này là LAZY!"Hầu hết các phương pháp Iterator và Iterables đều là LAZY! Điều này có nghĩa là gì
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>)
Ai đó có thể giúp tôi hiểu được ý nghĩa của chúng bằng cách này, cho phép nói rằng tôi đã là một bộ sưu tập các Persons
và tôi áp dụng một bộ lọc để trở lại chỉ những người có tên cuối cùng là DOE.
Vậy điều này có nghĩa là "quá trình lọc chỉ xảy ra trong lần gọi đầu tiên tới doeOnly.next()?"
List<Person> persons= ....
Iterable doeOnly= Iterables.filter(persons,DOE_AS_LAST_NAME_PREDICATE);
Việc lọc phải xảy ra trong lần gọi đầu tiên tới 'doeOnly.hasNext()' không 'next()', bởi vì nếu chỉ có một phần tử còn lại nhưng nó không thành công thì 'hasNext()' phải trả về false, nhưng bộ lọc không biết rằng cho đến khi nó đã tìm nạp phần tử không khớp. – finnw