Назад к вопросам
СБЕР
Middle
5
Расскажи о стримах в Java: на какие группы делятся методы и в чём разница?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java Stream API методы можно условно разделить на две группы:
-
Промежуточные (intermediate) методы — возвращают новый стрим, позволяют строить цепочку операций, не выполняя их сразу. Примеры:
filter(),map(),sorted(),distinct(),limit(),skip(). -
Терминальные (terminal) методы — запускают обработку стрима и возвращают результат или побочный эффект. После вызова терминального метода стрим считается потреблённым и больше не используется. Примеры:
collect(),forEach(),reduce(),count(),anyMatch(),allMatch().
Разница в том, что промежуточные методы ленивы — они откладывают выполнение, а терминальные — инициируют обработку данных.
Пример:
List<String> names = List.of("Anna", "Bob", "Charlie", "David");
long count = names.stream()
.filter(name -> name.length() > 3) // промежуточный
.map(String::toUpperCase) // промежуточный
.count(); // терминальный
System.out.println(count); // Выведет количество имён длиной больше 3