Java >> Java tutorial >  >> Tag >> ArrayList

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. Givet en liste over sportsgrene, lad os se, hvordan vi kan slippe af med nogle elementer fra følgende liste:

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

2. ArrayList#remove

ArrayList har to tilgængelige metoder til at fjerne et element ved at passere elementets indeks skal fjernes, eller passer selve elementet skal fjernes, hvis den er til stede. Vi kommer til at se begge anvendelser.

2.1. Fjern efter indeks

Bruger fjern ved at sende et indeks som parameter, kan vi fjerne elementet på den angivne position i listen og skift eventuelle efterfølgende elementer til venstre, idet du trækker et fra deres indeks. Efter udførelse, fjern metoden returnerer det element, der er blevet fjernet:

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

2.2. Fjern med element

En anden måde er at fjerne 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 det findes, hvis ikke, er listen uændret:

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

3. Fjernelse under iteration

Nogle gange ønsker vi at fjerne et element fra en ArrayList mens vi sløjfer det. På grund af ikke at 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<String> iterator = sports.iterator();
while (iterator.hasNext()) {
    if (iterator.next().equals("Boxing")) {
        iterator.remove();
    }
}

4. ArrayList#removeIf (JDK 8+)

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

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

Endelig kan vi gøre det ved at bruge 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 øvelse har vi set på de forskellige måder at fjerne elementer fra en ArrayList i Java.

Som sædvanlig er alle de eksempler, der bruges i denne tutorial, tilgængelige på GitHub.


Java tag