Sobes.tech
Назад к вопросам
Junior — Middle
71

Объясните различие между интерфейсом Iterator и методом forEach в Stream API Java.

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

sobes.tech AI

Интерфейс Iterator в Java предоставляет способ последовательного обхода элементов коллекции с возможностью явного контроля цикла, например, с помощью методов hasNext() и next(). Он позволяет вручную перебирать элементы, а также удалять элементы во время итерации.

Метод forEach в Stream API — это более декларативный способ обработки элементов потока. Он принимает лямбда-выражение или ссылку на метод и применяет его к каждому элементу, скрывая детали итерации. forEach не позволяет изменять структуру коллекции во время обхода и обычно используется для побочных эффектов.

Пример:

List<String> list = Arrays.asList("a", "b", "c");

// С использованием Iterator
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

// С использованием forEach
list.stream().forEach(element -> System.out.println(element));

Основное различие — Iterator даёт полный контроль над процессом обхода, включая возможность удаления элементов, а forEach — более удобный и лаконичный способ применения операции к каждому элементу без управления итерацией.