что такое Stream в Java ?
`Stream` — это абстракция, которая позволяет обрабатывать последовательности элементов (например, коллекции) в функциональном стиле. API был добавлен в Java 8 и представляет собой набор классов и интерфейсов в пакете `java.util.stream`. Основная цель — упростить работу с коллекциями данных, позволяя выполнять различные операции с элементами последовательности, такие как фильтрация, сортировка, преобразование, агрегирование и другие, без необходимости явно писать циклы и управлять итерациями.
Особенности:
1. Не изменяет исходные данные: Операции с потоками данных не модифицируют исходную коллекцию, что способствует функциональному подходу и неизменяемости данных.
2. Ленивая обработка: Большинство операций с потоками выполняются лениво, то есть вычисления начинаются только тогда, когда это необходимо для получения результата (например, при вызове терминальной операции).
3.
Основные операции:
Операции с потоками данных делятся на промежуточные (intermediate) и терминальные (terminal).
- Промежуточные операции возвращают новый поток и включают фильтрацию (`filter`), преобразование (`map`), сортировку (`sorted`) и другие. Они используются для преобразования потока и могут быть объединены в цепочки.
- Терминальные операции возвращают результат определенного типа (например, коллекцию, значение, boolean) или выполняют действие (`forEach`). К терминальным операциям относятся `collect`, `reduce`, `count`, `findFirst`.
Пример использования:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
// Фильтрация и преобразование списка строк в список их длин
List<Integer> lengths = strings.stream() // Создание потока
.filter(s -> s.length() > 5) // Фильтрация строк по длине
.map(String::length) // Преобразование строки в её длину
.collect(Collectors.toList()); // Сбор результатов в список
System.out.println(lengths); // Вывод: [6, 6]
}
}`Stream` API обеспечивает мощный и гибкий инструментарий для работы с данными в декларативном стиле, позволяя сосредоточиться на операциях обработки данных, а не на управлении итерациями и хранением промежуточных результатов.
Feb. 22, 2024, easyoffer
