Junior
97
questionbank
Что такое Stream в Java?
Ответ от нейросети
sobes.tech AI
Stream в Java — это последовательность элементов, поддерживающая операции над этими элементами. Не является структурой данных, а представляет набор операций. Позволяет обрабатывать данные декларативно и выполнять их распараллеливание.
Основные характеристики:
- Не изменяет источник данных: Stream не модифицирует коллекцию или массив, откуда он создан.
- Выполняется лениво: Промежуточные операции (такие как
filter,map) не выполняются немедленно. Выполнение начинается только при вызове терминальной операции (такой какforEach,collect,sum). - Может быть использован однократно: После выполнения терминальной операции Stream "закрывается" и не может быть использован повторно.
Основные типы операций:
- Промежуточные (Intermediate): Возвращают новый
Stream. Примеры:filter(),map(),sorted(),distinct(),limit(),skip(). - Терминальные (Terminal): Возвращают результат или побочный эффект и завершают обработку Stream. Примеры:
forEach(),collect(),count(),sum(),average(),reduce(),min(),max(),anyMatch(),allMatch(),noneMatch().
Пример использования:
// Создание Stream из списка строк
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
// Промежуточная операция: фильтрация по имени, начинающимся на 'A'
Stream<String> filteredNamesStream = names.stream()
.filter(name -> name.startsWith("A"));
// Промежуточная операция: преобразование всех имен в верхний регистр
Stream<String> upperCaseNamesStream = filteredNamesStream
.map(String::toUpperCase);
// Терминальная операция: вывод отфильтрованных и преобразованных имен
upperCaseNamesStream.forEach(System.out::println);
// Сокращенный вариант с конвейером операций:
names.stream()
.filter(name -> name.startsWith("A")) // Промежуточная
.map(String::toUpperCase) // Промежуточная
.forEach(System.out::println); // Терминальная
Использование Stream API упрощает работу с коллекциями, делая код более читаемым и производительным при распараллеливании.