Топ-100Java Stream API - CodOrbits
LogoCodOrbits

Раздел: Java Core

Раздел охватывает ключевые возможности языка Java: аннотации, исключения, generics, лямбда-выражения, интерфейсы и другие базовые концепции.

Все разделы
Иконка Java Core

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
мин.

Similar Articles Icon
Divider

Object. Метод toString и его переопределение

15
мин.

Similar Articles Icon
Divider

Метод Clone и его переопределение

14
мин.

Similar Articles Icon