Можете привести пример операции, которая завершает обработку данных в потоке или коллекции?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Нужно показать, что понимается разница между промежуточными и терминальными операциями в Stream API. Терминальная операция запускает обработку и завершает работу со stream. После неё поток нельзя использовать повторно.
Определение:
Терминальная операция — это операция в stream pipeline, которая потребляет элементы, выполняет вычисление и завершает обработку потока. В коллекциях аналогом можно считать операцию, которая проходит по элементам и возвращает итоговый результат, например сумму, количество или найденный элемент.
Пример использования:
Например, collect, count, forEach, reduce, findFirst — это терминальные операции в Stream API. Они либо возвращают результат, либо выполняют действие и завершают stream.
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
long count = numbers.stream()
.filter(n -> n > 2)
.count();
System.out.println(count); // 3
}
}
Пояснение кода:
Код берет список чисел и создает stream. Затем filter(n -> n > 2) оставляет только элементы больше 2. После этого count() проходит по оставшимся элементам, считает их количество и завершает обработку stream. Итогом будет число 3.
Ключевые моменты:
- Терминальная операция завершает pipeline и запускает выполнение всех промежуточных операций.
- После терминальной операции stream нельзя использовать повторно.
- Частые терминальные операции:
count,collect,forEach,reduce,findFirst. - Промежуточные операции сами по себе не выполняются, пока не вызвана терминальная.
- В коллекциях итог обработки обычно получается через обход элементов и вычисление результата.