Представьте, что у меня есть что-то похожее на это:
Stream<Integer> stream = Stream.of(2,1,3,5,6,7,9,11,10)
.distinct()
.sorted();
Javadocs для distinct()
и sorted()
говорят, что они являются "промежуточной операцией с состоянием". Означает ли это, что внутри поток будет делать что-то вроде создания хеш-набора, добавлять все значения потока, а затем sorted()
будет sorted()
эти значения в отсортированный список или отсортированный набор? Или это умнее этого?
Другими словами, делает .distinct().sorted()
вызывает java для прохождения потока дважды или задержка java до завершения операции терминала (например, .collect
)?