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?