Встречается на собеседованиях • сегодня
В чем разница между peek и forEach в Stream API
`peek` и `forEach` оба являются терминальными операциями в Stream API, но имеют ключевые различия:
1. **Промежуточная vs терминальная**:
- `peek` — промежуточная операция (lazy), выполняется только при вызове терминальной операции.
- `forEach` — терминальная операция, сразу выполняет действие.
2. **Назначение**:
- `peek` — для отладки (логирование элементов).
- `forEach` — для выполнения side-effect-действий (сохранение, вывод).
3. **Пример**:
```java
List numbers = Arrays.asList(1, 2, 3);
// peek (не выполнится без терминальной операции)
numbers.stream()
.peek(n -> System.out.println("peek: " + n))
.count(); // терминальная операция
// forEach (выполнится сразу)
numbers.stream()
.forEach(n -> System.out.println("forEach: " + n));
```
**Важно**: `peek` не гарантирует обработку всех элементов, если поток не завершается терминальной операцией.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы