Java ArrayList replaceAll()

В Java ArrayList.replaceAll() сохраняет только те элементы в этом списке, которые присутствуют в указанной коллекции аргументов метода. Все остальные элементы удаляются из списка. Этот метод является полной противоположностью метода removeAll().

1. API ArrayList.replaceAll()

Метод replaceAll() принимает один аргумент типа UnaryOperator. Интерфейс UnaryOperator — это функциональный интерфейс с одним абстрактным методом apply() , который возвращает результат того же типа объекта, что и операнд. Мы видели UnaryOperator в действии в обычных лямбда-выражениях, принимающих один аргумент в форме 'x-> сделать что-то с x'.

public void replaceAll(UnaryOperator<E> operator);

Параметр метода – выражение UnaryOperator.
Метод возвращает – void.
Метод выдает исключение ConcurrentModificationException, если список изменяется, пока replaceAll() не завершен.

2. Пример ArrayList.replaceAll()

Следующие программы Java используют метод replaceAll() для изменения регистра всех элементов списка на нижний с помощью лямбда-выражения.

2.1 Использование встроенного выражения

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

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));System.out.println(alphabets);alphabets.replaceAll( e -> e.toLowerCase() );System.out.println(alphabets);

Вывод программы.

[A, B, C, D, E][a, b, c, d, e]

2.2. Пользовательская реализация UnaryOperator

Создайте новый класс, реализующий UnaryOperator для выполнения более сложной логики для каждого элемента arraylist.

class MyOperator implements UnaryOperator<String> {@Overridepublic String apply(String t) {//Add your custom logic herereturn t.toLowerCase();}}

Теперь мы можем использовать MyOperator следующим образом:

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));System.out.println(alphabets);alphabets.replaceAll( new MyOperator() );System.out.println(alphabets);

Вывод программы.

[A, B, C, D, E][a, b, c, d, e]

Вот и все о методе ArrayList replaceAll() в Java.

Подробнее: Документация по ArrayList Java

Исходный код на Github

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