Ответ 1
Это означает, что данные отфильтровываются по мере запроса - он не проходит через ваш список немедленно и создает новый список отфильтрованных данных. Вместо этого, когда вы вызываете iterator.next()
(например, автоматически в расширенном цикле), итератор будет запрашивать у него исходный источник данных (вашу коллекцию) для следующего элемента данных. Затем он попытается сопоставить это с фильтром. Если он соответствует ему, он вернет этот элемент. В противном случае, он попросит еще один элемент из коллекции, продолжая идти, пока он не закончится или не найдет совпадение.
Затем, когда вы в следующий раз спросите о следующем элементе, он будет продолжать движение с того места, где он остановился.
Другими словами, это означает, что "фильтрация происходит только при первом вызове doeOnly.next()
" - это означает, что "фильтрация происходит при каждом вызове iterator.next()
", где iterator
является результатом вызова doeOnly.iterator()
.