Представьте, что у меня есть что-то похожее на это:
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)?