Какова внутренняя реализация Java StreamsJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Какова внутренняя реализация Java Streams

Сообщение Anonymous »

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»