Fjernelse af et element fra en ArrayList

1. Oversigt

I denne vejledning skal vi se, hvordan du fjerner elementer fra en ArrayList i Java ved hjælp af forskellige teknikker. Med en liste over sportsgrene, lad os se, hvordan vi kan slippe af med nogle af elementerne i følgende liste:

Liste sport = ny ArrayList (); sports.add ("Fodbold"); sports.add ("Basketball"); sports.add ("Baseball"); sports.add ("Boksning"); sports.add ("Cykling");

2. ArrayList # fjern

ArrayList har to tilgængelige metoder til at fjerne et element, passerer elementets indeks skal fjernes, eller passerer selve elementet fjernes, hvis til stede. Vi vil se begge anvendelser.

2.1. Fjern efter indeks

Ved brug af fjerne sender et indeks som parameter, kan vi fjern elementet på den angivne position på listen, og skub eventuelle efterfølgende elementer til venstre og træk et fra deres indekser. Efter henrettelse, fjerne metoden returnerer det element, der er blevet fjernet:

sports.remove (1); // siden indeks starter ved 0, fjerner dette "Basketball" assertEquals (4, sports.size ()); assertNotEquals (sports.get (1), "Basketball");

2.2. Fjern efter element

En anden måde er at fjern den første forekomst af et element fra en liste ved hjælp af denne metode. Formelt set fjerner vi elementet med det laveste indeks, hvis der findes, hvis ikke, er listen uændret:

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

3. Fjernelse under itterering

Nogle gange vil vi fjerne et element fra en ArrayList mens vi sløjfer det. På grund af ikke generere en ConcurrentModificationException, vi skal bruge Iterator klasse for at gøre det ordentligt.

Lad os se, hvordan vi kan slippe af med et element i en løkke:

Iterator iterator = sports.iterator (); mens (iterator.hasNext ()) {hvis (iterator.next (). er lig med ("Boxing")) {iterator.remove (); }}

4. ArrayList # removeIf (JDK 8+)

Hvis vi bruger JDK 8 eller højere versioner, kan vi drage fordel af ArrayList #fjerneHvis hvilken fjerner alle elementerne i ArrayList der tilfredsstiller et givet prædikat.

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

Endelig kan vi gøre det ved hjælp af tredjepartsbiblioteker som Apache Commons, og hvis vi vil gå dybere, kan vi se, hvordan vi fjerner alle specifikke hændelser på en effektiv måde.

5. Konklusion

I denne vejledning så vi på de forskellige måder at fjerne elementer fra en ArrayList i Java.

Som sædvanligt er alle eksemplerne brugt i denne vejledning tilgængelige på GitHub.