junior
Какие конечные методы работы со стримами вы знаете?
Конечные (терминальные) операции запускают обработку конвейера и возвращают результат — значение, коллекцию или void. После вызова терминальной операции стрим закрывается и повторно использоваться не может.
Основные терминальные операции
| Метод | Возвращает | Описание |
|---|---|---|
collect() |
Коллекция / структура данных | Сбор результатов |
toArray() |
Массив | Преобразование в массив |
forEach() |
void |
Действие над каждым элементом (порядок не гарантирован в parallel) |
forEachOrdered() |
void |
Действие с гарантией порядка |
reduce() |
Optional / значение |
Агрегация в одно значение |
count() |
long |
Количество элементов |
min() |
Optional |
Минимальный элемент по Comparator |
max() |
Optional |
Максимальный элемент по Comparator |
findFirst() |
Optional |
Первый элемент |
findAny() |
Optional |
Любой элемент (полезен в parallel) |
anyMatch() |
boolean |
Хотя бы один элемент удовлетворяет условию |
allMatch() |
boolean |
Все элементы удовлетворяют условию |
noneMatch() |
boolean |
Ни один элемент не удовлетворяет условию |
Дополнительно для числовых стримов
| Метод | Описание |
|---|---|
sum() |
Сумма всех чисел |
average() |
Среднее арифметическое |
Методы findFirst(), findAny(), anyMatch(), allMatch(), noneMatch() — short-circuiting: они могут завершить обработку, не дожидаясь всех элементов.
На собеседовании: перечислите хотя бы 7-8 методов, разделив их на категории: получение результата (
collect,reduce,toArray), поиск (findFirst,findAny), проверка (anyMatch,allMatch,noneMatch), итерация (forEach).