Метод findAny
не находит все элементы;он находит только один элемент.
Возвращает Optional
, описывающий некоторый элемент потока, или пустой Optional
, если поток пустой.
Это короткийработа терминала с коммутацией каналов.
Поток не обрабатывается до тех пор, пока не будет вызван метод терминала, в данном случае findAny
.Но метод peek
не выполняет своего действия над элементом, пока элемент не будет использован действием терминала.
В случаях, когда реализация потока может оптимизироватьбез создания некоторых или всех элементов (например, с помощью операций короткого замыкания, таких как findFirst
, или в примере, описанном в count()
), действие не будет вызываться для этих элементов.
Метод findAny
имеет короткое замыкание, поэтому действие peek
будет вызываться только для элемента, найденного findAny
.
. Поэтому вы получаете только два значения A
враспечатка.Один печатается методом peek
, а второй - значением внутри Optional
, возвращаемым findAny
.