Какие различия между findFirst и findAny в Java 8?

152
18 ноября 2019, 11:10

Я не очень понимают отличие findFirst() от findAny() в Java Stream API.

Я думал, что findFirst() возвращает первый элемент стрима, а findAny() случайны элемент стрима.

Но когда я запускаю 2 примера кода:

Stream.of(...).findFirst() и Stream.of(...).findAny()

То они оба возвращают первый элемент стрима. Почему? Они оба делают одинаковую задачу?

Answer 1

Они оба делают одинаковую задачу?

Нет. Согласно JavaDoc Stream#findAny():

Возвращает Optional<T>, хранящий некоторый элемент стрима, или пустой Optional<T>, если стрим пуст. Поведение этой операции не определено - он может выбрать любой элемент в потоке. Это позволяет обеспечить максимальную производительность при параллельных операциях;

Т.е., при непараллельном стриме он вернет первый элемент. А при параллельном стриме он может вернуть любой элемент.

Тогда как Stream#findFirst() вернет Optional<T>, хранящий строго первый элемент потока.

READ ALSO
Запись в конец файла

Запись в конец файла

Есть файл, и там есть некоторые строки, мне нужно через Java дописать в конец файла еще строку (или строки)Вот мой метод который это должен был...

185
Эффекты на div при создании через js

Эффекты на div при создании через js

Есть вопросКак мне сделать эффект на div сразу после создания

209
x1 - undefined (вроде бы не должен быть) [закрыт]

x1 - undefined (вроде бы не должен быть) [закрыт]

Есть код , вычисляющий точку пересечения отрезков(скопировал его)

180
Разрешение jQuery внутри React компонента

Разрешение jQuery внутри React компонента

Как React компоненту позволить запустить jQuery код из файла mainjs?

174