Java ArrayList forEach()

Метод ArrayList forEach() выполняет указанное действие Consumer над каждым элементом списка до тех пор, пока все элементы не будут обработаны или пока действие не выдаст исключение.

По умолчанию действия выполняются над элементами в порядке итерации.

1. Внутренняя реализация forEach()

Как показано ниже, метод перебирает все элементы списка и вызывает action.accept() для каждого элемента. Здесь действие — это экземпляр интерфейса Consumer.

@Overridepublic void forEach(Consumer<? super E> action){Objects.requireNonNull(action);final int expectedModCount = modCount;@SuppressWarnings("unchecked")final E[] elementData =(E[]) this.elementData;final int size = this.size;for(int i=0; modCount == expectedModCount && i < size; i++) {action.accept(elementData[i]);}if(modCount != expectedModCount) {throw new ConcurrentModificationException();}}
  • Параметр метода – действие потребителя, которое должно быть выполнено для каждого элемента.
  • Метод возвращает – void.
  • Выбросы методов – ConcurrentModificationException и NullPointerException.

2. Примеры ArrayList forEach()

2.1. Вывести все элементы списка на консоль

Давайте начнем с очень простой программы Java, которая просто печатает каждый из элементов из списка. Мы можем применить тот же код для класса ArrayList.

List<String> list = Arrays.asList("A","B","C","D");list.forEach(System.out::println);

2.2. Индивидуальные действия потребителей

Реализация Consumer принимает один аргумент и не возвращает никакого значения. Мы также можем передавать пользовательские действия, которые мы создали в других местах.

Например, следующий код перебирает список и выводит строки в нижнем регистре с помощью API forEach().

Consumer<String> action = x -> System.out.println(x.toLowerCase());list.forEach(action);

2.3 Лямбда-выражения

Мы также можем передать простое лямбда-выражение в строку.

list.forEach(e -> System.out.println(e.toLowerCase()));

Если в действии Потребителя имеется более одного оператора, то используйте фигурные скобки для заключения операторов.

list.forEach(e -> {System.out.println(e.toLowerCase());//other statements});

Читать далее:

Руководство по Java ArrayList
ArrayList Java Документация

Прокрутить вверх