Код: Выделить всё
List list = new ArrayList();
list.add("Apple");
list.add("Cherry");
list.add("Peach");
List collect = list.stream()
.peek(x -> System.out.println(x))
.filter(x -> x.length()>4)
.peek(x -> System.out.println(x))
.collect(Collectors.toList());
Код: Выделить всё
Apple
Apple
Cherry
Cherry
Peach
Peach
Первый вход потока будет обрабатываться до конца потока.
Только тогда Второй ввод потока будет обработан и снова до конца потока.
Это полностью отличается от обычных вызовов методов. Обычно вы ожидаете, что ВСЕ входные данные будут обработаны за один вызов метода. Если вы вызовете peek(), я ожидал, что увижу
Код: Выделить всё
Apple
Cherry
Peach
Таким образом, реализация потока() будет иметь внутри цикл for и последовательно вызывать следующую цепочку методы только с одним входом.
Подробнее здесь: https://stackoverflow.com/questions/686 ... va-streams
Мобильная версия