Entfernen eines Elements aus einer ArrayList

1. Übersicht

In diesem Tutorial erfahren Sie, wie Sie Elemente mit verschiedenen Techniken aus einer ArrayList in Java entfernen . Lassen Sie uns anhand einer Liste von Sportarten sehen, wie wir einige Elemente der folgenden Liste entfernen können:

List sports = new ArrayList(); sports.add("Football"); sports.add("Basketball"); sports.add("Baseball"); sports.add("Boxing"); sports.add("Cycling");

2. ArrayList # entfernen

ArrayList verfügt über zwei verfügbare Methoden zum Entfernen eines Elements: Übergeben des Index des zu entfernenden Elements oder Übergeben des zu entfernenden Elements selbst , falls vorhanden. Wir werden beide Verwendungen sehen.

2.1. Nach Index entfernen

Wenn Sie entfernen verwenden, um einen Index als Parameter zu übergeben, können Sie das Element an der angegebenen Position in der Liste entfernen und alle nachfolgenden Elemente nach links verschieben und eines von ihren Indizes abziehen. Nach der Ausführung gibt die Methode remove das entfernte Element zurück:

sports.remove(1); // since index starts at 0, this will remove "Basketball" assertEquals(4, sports.size()); assertNotEquals(sports.get(1), "Basketball");

2.2. Nach Element entfernen

Eine andere Möglichkeit besteht darin , das erste Vorkommen eines Elements mit dieser Methode aus einer Liste zu entfernen . Formal entfernen wir das Element mit dem niedrigsten Index, falls vorhanden. Wenn nicht, bleibt die Liste unverändert:

sports.remove("Baseball"); assertEquals(4, sports.size()); assertFalse(sports.contains("Baseball"));

3. Entfernen während des Iterierens

Manchmal möchten wir ein Element aus einer ArrayList entfernen, während wir es schleifen. Da keine ConcurrentModificationException generiert wird , müssen wir die Iterator- Klasse verwenden, um dies ordnungsgemäß auszuführen.

Mal sehen, wie wir ein Element in einer Schleife loswerden können :

Iterator iterator = sports.iterator(); while (iterator.hasNext()) { if (iterator.next().equals("Boxing")) { iterator.remove(); } }

4. ArrayList # removeIf (JDK 8+)

Wenn wir JDK 8 oder eine höhere Version verwenden, können wir ArrayList # removeIf verwenden, mit dem alle Elemente der ArrayList entfernt werden , die ein bestimmtes Prädikat erfüllen.

sports.removeIf(p -> p.equals("Cycling")); assertEquals(4, sports.size()); assertFalse(sports.contains("Cycling"));

Schließlich können wir dies mithilfe von Bibliotheken von Drittanbietern wie Apache Commons tun. Wenn wir tiefer gehen möchten, können wir sehen, wie alle spezifischen Vorkommen auf effiziente Weise entfernt werden können.

5. Schlussfolgerung

In diesem Tutorial haben wir uns die verschiedenen Möglichkeiten zum Entfernen von Elementen aus einer ArrayList in Java angesehen.

Wie üblich sind alle in diesem Tutorial verwendeten Beispiele auf GitHub verfügbar.