Back to questions
Middle
283
questionbank
Что делает метод peek в Stream API?
Sobes Copilot
Get answers in real time
Answer from AI
sobes.tech AI
Метод peek в Java Stream API предназначен для выполнения некоторого действия над каждым элементом потока без его потребления, то есть без изменения самого потока. Он возвращает тот же поток, позволяя проводить отладочные или логирующие действия в процессе обработки.
Пример использования:
// Пример использования peek для логирования
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> processedNames = names.stream()
.filter(name -> name.length() > 3) // Фильтруем имена длиннее 3 символов
.peek(name -> System.out.println("Processing name: " + name)) // Логируем каждое имя после фильтрации
.map(String::toUpperCase) // Преобразуем к верхнему регистру
.collect(Collectors.toList()); // Собираем в список
// Вывод:
// Processing name: Alice
// Processing name: Charlie
Важные моменты:
peekявляется промежуточной операцией.- Он используется в основном для отладки или выполнения побочных эффектов.
- Не следует полагаться на
peekдля изменения состояния элементов потока или внешних переменных, так как порядок и количество вызовов могут быть непредсказуемыми в параллельных потоках. - Если за
peekне следует терминальная операция, действие, указанное вpeek, не будет выполнено.