Gymterview
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 не принимается.