Назад к вопросам
Middle
226
questionbank

Что делает метод peek в Stream API?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

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, не будет выполнено.