Java Stream API
Last updated: 5 мая 2025 г.Stream
– для работы с коллекциями.
Избавляет от необходимости вручную реализовывать операции над коллекциями.
Проще говоря пишем запрос к коллекции как к базе данных без ничего лишнего.
То есть например мы можем запросить из коллекции только четные числа простым запросом в формате цепочки соответствующих функций класса Stream.
Также позволяет производить операции над элементами коллекции в параллельных потоках.
Пример программы:
1import java.util.*;
2import static java.util.stream.Collectors.toList;
3
4class SStream{
5 public static void main(String[] args) {
6 List< Integer > numbers = Arrays.asList(3,2,2,3,7,3,5);
7
8 // map нужен для преобразования элементов по какому-то правилу. Например
9 // с помощью map умножаем каждый элемент коллекции сам на себя.
10 // То есть i здесь это элемент коллекции и stream ниже проходит по каждому
11 // элементу коллекции и совершает с ним операцию, заданную нами с помощью
12 // лямбда-выражения. В нашем случае — умножение элемента i самого на себя.
13 // В collect передаем метод, который будет преобразовывать в необходимую
14 // коллекцию результат запроса. В нашем случае результирующая коллекция
15 // будет List, так как метод toList().
16 // В итоге выводимая на консоль коллекция List будет содержать числа,
17 // которые являются результатом лямбда-выражения.
18 System.out.println(numbers.stream().map(i -> i*i).collect(toList()));
19
20 // filter — фильтрует элементы в соответствии с условием.
21 // Здесь запрашиваем только четные числа коллекции.
22 System.out.println(numbers.stream().filter(i -> i%2 == 0).collect(toList()));
23
24 // limit — оставляет только указанное количество элементов коллекции.
25 System.out.println(numbers.stream().limit(4).collect(toList()));
26
27 // forEach — применяем какое-то действие к каждому элементу.
28 numbers.stream().forEach(System.out::println);
29
30 // sorted — сортирует элементы. Также может принимать аргументом лямбда-
31 // выражение, по которому сортирует.
32 System.out.println(numbers.stream().sorted().collect(toList()));
33
34 // parallel — для распараллеливания выполнения операций с элементами коллекции.
35 // То есть благодаря добавлению parallel к коллекции лямбда-выражение может
36 // выполняться намного быстрее — и насколько быстро, зависит от количества ядер
37 // в компьютере.
38 System.out.println(numbers.stream().parallel().map(i -> i*i).collect(toList()));
39 }
40}
Вывод:

Следующие уроки
Работа с элементами файловой системы с помощью класса File
10
мин.
Object. Метод toString и его переопределение
15
мин.
Метод Clone и его переопределение
14
мин.