Метод sorted
Метод sorted класса Stream сортирует элементы потока
и возвращает новый поток, состоящий из отсортированных элементов.
По умолчанию сортировка происходит в естественном порядке
(для чисел - по возрастанию, для строк - в лексикографическом порядке).
Метод является промежуточной операцией и не изменяет исходный поток.
Если необходимо задать собственный порядок сортировки, в параметр
можно передать Comparator.
Синтаксис
stream.sorted()
stream.sorted(comparator)
Пример
Давайте отсортируем поток чисел в естественном порядке:
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<Integer> stream = Stream.of(3, 1, 5, 2, 4);
stream.sorted().forEach(System.out::println);
}
}
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте отсортируем поток строк в обратном порядке, передав компаратор в параметр метода:
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<String> stream = Stream.of("abcde", "12345", "bcd", "a");
stream.sorted((a, b) -> b.length() - a.length())
.forEach(System.out::println);
}
}
Результат выполнения кода:
"abcde"
"12345"
"bcd"
"a"
Пример
Давайте отсортируем список чисел по убыванию и соберем результат в новый список:
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<Integer> numbers = List.of(5, 3, 1, 4, 2);
List<Integer> res = numbers.stream()
.sorted((a, b) -> b - a)
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[5, 4, 3, 2, 1]