Stream API
Java Stream API - это нововведение, представленное в Java 8, которое позволяет выполнять функциональные операции на коллекциях данных с использованием лямбда-выражений. Stream API позволяет лаконично выполнять операции фильтрации, преобразования, сортировки и агрегации данных, делая код более читаемым и поддерживаемым.
Основные преимущества Stream API:
- Удобство и краткость кода: Stream API позволяет писать компактный и выразительный код, используя цепочку операций над данными. 
- Ленивая вычислительная модель: Многие операции Stream API выполняются лениво, что означает, что они вычисляются только при необходимости. Это повышает производительность и экономит ресурсы. 
- Параллельная обработка данных: Stream API поддерживает параллельную обработку данных, что позволяет использовать все ядра процессора для ускорения выполнения операций. 
- Интеграция с лямбда-выражениями: Stream API хорошо интегрируется с лямбда-выражениями, что позволяет писать гибкий и функциональный код. 
Примеры операций Stream API:
import java.util.Arrays;
import java.util.List;
public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");
        // Фильтрация и сортировка имен, начинающихся с буквы "A", в верхнем регистре
        names.stream()
            .filter(name -> name.startsWith("A"))
            .map(String::toUpperCase)
            .sorted()
            .forEach(System.out::println);
        // Вычисление суммы квадратов чисел
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        int sumOfSquares = numbers.stream()
                                 .mapToInt(x -> x * x)
                                 .sum();
        System.out.println("Сумма квадратов чисел: " + sumOfSquares);
    }
}В этом примере мы создаем поток данных из списка имен names, фильтруем имена, начинающиеся с буквы "A", преобразуем их в верхний регистр, сортируем и выводим на экран. Затем мы используем метод sum() для вычисления суммы квадратов чисел из списка numbers.
- filter: Фильтрует элементы потока с помощью предиката (функции, возвращающей булево значение). - stream.filter(predicate)
- map: Преобразует каждый элемент потока с помощью переданной функции. - stream.map(mapper)
- flatMap: Преобразует каждый элемент потока в поток других элементов и объединяет их в один поток. - stream.flatMap(mapper)
- distinct: Удаляет дубликаты из потока. - stream.distinct()
- sorted: Сортирует элементы потока в заданном порядке. - stream.sorted()
- limit: Ограничивает количество элементов в потоке. - stream.limit(n)
- skip: Пропускает первые n элементов в потоке. - stream.skip(n)
- forEach: Применяет действие к каждому элементу потока. - stream.forEach(action)
- reduce: Объединяет элементы потока в одно значение. - stream.reduce(identity, accumulator)
- collect: Собирает элементы потока в коллекцию или другую структуру данных. - stream.collect(collector)
- anyMatch: Проверяет, удовлетворяет ли хотя бы один элемент потока условию. - stream.anyMatch(predicate)
- allMatch: Проверяет, удовлетворяют ли все элементы потока условию. - stream.allMatch(predicate)
- noneMatch: Проверяет, не удовлетворяет ли ни один элемент потока условию. - stream.noneMatch(predicate)
- findFirst: Возвращает первый элемент потока. - stream.findFirst()
- findAny: Возвращает любой элемент потока. - stream.findAny()
Last updated
Was this helpful?
