Метод forEach
Метод forEach класса Stream выполняет
заданное действие для каждого элемента потока.
В параметр мы передаем объект типа Consumer,
который описывает действие, применяемое к каждому
элементу. Метод является терминальной операцией:
после его вызова поток считается использованным
и не может быть переиспользован. Метод ничего
не возвращает.
Синтаксис
stream.forEach(Consumer<? super T> action)
Пример
Давайте переберем все элементы потока и выведем каждый из них в консоль:
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<String> stream = Stream.of("a", "b", "c", "d", "e");
stream.forEach(System.out::println);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте переберем все элементы списка и выведем каждый из них с префиксом:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
list.stream().forEach(
n -> System.out.println("item: " + n)
);
}
}
Результат выполнения кода:
"item: 1"
"item: 2"
"item: 3"
"item: 4"
"item: 5"
Пример
Давайте отфильтруем поток и применим метод
forEach только к подходящим элементам:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
list.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println);
}
}
Результат выполнения кода:
2
4
Смотрите также
-
метод
forEachOrdered,
который выполняет действие в порядке следования элементов -
метод
peek,
который выполняет промежуточное действие над элементами -
метод
filter,
который отбирает элементы по условию -
метод
map,
который преобразует каждый элемент потока