Относительно метода итерации Java 9 Stream , я не уверен в порядке выполнения методов Predicate
и UnaryOperator
.
Рассмотрим следующий пример:
Stream<BigInteger> streamIterate = Stream.iterate(BigInteger.ZERO, n -> n.intValue() < 100, n -> n.add(BigInteger.ONE));
streamIterate.forEach(System.out::println);
Печатные значения идут от 0 до 99 , и это меня смутило.
Если первый элемент потока - seed
,и все остальные элементы добавляются, если условие выполняется для текущего элемента, это означает, что когда мы добавляем значение 99 в поток, он становится текущим элементом, условие hasNext
выполняется имы должны ожидать, что 100 будет последним значением до окончания потока.
Однако поток заканчивается на 99 .