Java ArrayList removeAll(): удалить все вхождения элемента

Метод 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.

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