Метод Java ArrayList.removeAll() принимает коллекцию элементов и удаляет все вхождения элементов указанной коллекции из этого arraylist. Напротив, метод remove() используется для удаления только первого вхождения указанного элемента.
ArrayList алфавиты = new ArrayList(Arrays.asList("A", "B", "C", "C", "D"));//1 - Удаляет все вхождения элементаalphabets.removeAll(Collections.singleton("C")); //[A, B, D]//2 - Удаляет все вхождения всех элементов из указанной коллекцииalphabets.removeAll(Arrays.asList("A", "B", "C")); //[D]
1. Как работает removeAll()?
Внутренне метод removeAll() перебирает все элементы arraylist. Для каждого элемента он передает элемент в метод contains() коллекции аргументов.
- Если элемент найден в коллекции аргументов, он удаляется путем переупорядочивания индекса.
- Если элемент не найден, он сохраняется в резервном массиве.
Синтаксис метода removeAll() следующий:
public boolean removeAll(Collection<?> c);
- Параметр метода: коллекция, содержащая элементы, которые необходимо удалить из этого списка.
- Метод возвращает: true, если этот список изменился в результате вызова.
- Метод бросков:
- ClassCastException – если класс элемента этого списка несовместим с указанной коллекцией.
- NullPointerException – если этот список содержит нулевой элемент, а указанная коллекция не допускает нулевых элементов.
2. Примеры удаления всех вхождений элемента(ов)
Для демонстрационных целей следующая программа Java содержит список строк. Строка «C» присутствует в списке 2 раза. Остальные строки появляются в списке один раз.
Когда мы хотим удалить все вхождения одного элемента, мы оборачиваем элемент в коллекцию с помощью метода Collection.singleton(). Затем мы передаем коллекцию методу remove, и он удаляет все вхождения строки «C» из списка.
ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "C", "D"));alphabets.removeAll(Collections.singleton("C"));System.out.println(alphabets); // [A, B, D]
Аналогично, если мы хотим удалить все вхождения нескольких элементов в одном операторе, мы можем передать список, содержащий все те элементы, которые мы намереваемся удалить из arraylist.
В следующей программе мы передаем список, содержащий строки «A», «B» и «C». После выполнения программы в списке остается только строка «D», а все остальные строки удаляются.
ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "C", "D"));alphabets.removeAll(Arrays.asList("A", "B", "C"));System.out.println(alphabets); // [D]
Вот и все, что касается метода ArrayList removeAll() в Java.