Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Stream.sorted()

Сортирует элементы потока.

Доступно с: Java 8

Синтаксис

Stream<T> sorted()
Stream<T> sorted(Comparator<? super T> comparator)

Параметры

ПараметрТипОписание
comparatorComparator<? super T>Необязательное правило сравнения.

Возвращаемое значение

Stream<T>Отсортированный поток.

Примеры

Отсортированная копия, исходный список не меняется:

void main() {
    List<Integer> nums = List.of(3, 1, 2);
    IO.println(nums.stream().sorted().toList());
    IO.println(nums.stream().sorted(Comparator.reverseOrder()).toList());
    IO.println(nums);
}

Результат:

[1, 2, 3]
[3, 2, 1]
[3, 1, 2]

Три самых дорогих товара:

record Product(String name, int price) {}
 
void main() {
    var products = List.of(new Product("a", 50), new Product("b", 10),
        new Product("c", 90), new Product("d", 70));
    products.stream()
        .sorted(Comparator.comparingInt(Product::price).reversed())
        .limit(3)
        .forEach(p -> IO.println(p.name() + " " + p.price()));
}

Результат:

c 90
d 70
a 50

Примечания

Без аргумента элементы должны быть Comparable, иначе при выполнении будет ClassCastException. Сортировка устойчивая для упорядоченных потоков. Это «тяжёлая» операция: ей нужно увидеть все элементы, поэтому на бесконечном потоке она не завершится.

См. также

  • List.sort() — Сортирует список на месте по заданному правилу.
  • Comparator.comparing() — Создаёт компаратор, который сравнивает объекты по одному полю.
  • Stream.distinct() — Убирает повторяющиеся элементы потока.

В учебнике

  • Операции над потоками — Основные операции Stream API — filter, map, sorted, distinct, limit, skip, count, reduce, anyMatch, findFirst и числовые потоки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.