В 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