junior
Для чего в стримах предназначен метод sorted?
sorted() — промежуточная операция, которая возвращает стрим с элементами, отсортированными в натуральном порядке (по Comparable) или по заданному Comparator. Исходная коллекция при этом не изменяется — sorted() создаёт отсортированное представление.
Пример
Stream.of("banana", "apple", "cherry")
.sorted()
.forEach(System.out::println); // apple, banana, cherry
Stream.of("banana", "apple", "cherry")
.sorted(Comparator.reverseOrder())
.forEach(System.out::println); // cherry, banana, apple
Важно учитывать, что sorted() является stateful-операцией: для сортировки необходимо накопить все элементы в буфер, что потребляет память пропорционально размеру стрима. На бесконечных стримах вызов sorted() без предварительного limit() приведёт к зависанию.
На собеседовании: подчеркните, что
sorted()— stateful и потребляет память O(n). Также упомяните, что для примитивных стримов (IntStream) сортировка выполняется только в натуральном порядке —Comparatorне принимается.