Stream API — это способ функциональной обработки коллекций (и других источников данных) в декларативном стиле.
- Не изменяет исходную коллекцию
- Работает лениво — вычисления происходят только при терминальной операции
- Поддерживает параллельную обработку
collection.stream() // создание стрима
.filter(...) // промежуточная операция
.map(...) // преобразование
.collect(...) // терминальная операцияfilter(Predicate)— фильтрацияmap(Function)— преобразование элементовsorted(),distinct(),limit(n)
collect(Collectors.toList())— сбор в коллекциюforEach(Consumer)— действие над каждым элементомcount(),anyMatch(),allMatch(),reduce()
List<String> names = List.of("Anna", "Alex", "Bob");
List<String> result = names.stream()
.filter(n -> n.startsWith("A"))
.map(String::toUpperCase)
.collect(Collectors.toList());Результат: ["ANNA", "ALEX"]
stream()— обычный стрим, однопоточныйparallelStream()— многопоточный (может быть быстрее, но не всегда)- Потоки одноразовые — нельзя использовать повторно после терминальной операции