Odstránenie prvku zo zoznamu ArrayList

1. Prehľad

V tomto výučbe sa dozvieme, ako odstrániť prvky z priečinka ArrayList v Jave pomocou rôznych techník. Vzhľadom na zoznam športov sa pozrime, ako sa môžeme zbaviť niektorých prvkov nasledujúceho zoznamu:

Zoznam športov = nový ArrayList (); sports.add („Futbal“); sports.add („Basketbal“); sports.add ("Baseball"); sports.add ("Box"); sports.add („Cyklistika“);

2. ArrayList # odstrániť

ArrayList má dve dostupné metódy na odstránenie prvku, odovzdanie indexu prvku byť odstránený, príp odovzdanie samotného prvku odstrániť, ak sú prítomné. Uvidíme obe zvyklosti.

2.1. Odstrániť podľa indexu

Použitím odstrániť odovzdanie indexu ako parametra, môžeme odstráňte prvok v určenej polohe v zozname a posuňte všetky nasledujúce prvky doľava, odčítaním jedného z ich indexov. Po vykonaní odstrániť metóda vráti prvok, ktorý bol odstránený:

šport.odstrániť (1); // keďže index začína na 0, bude odstránený výraz „Basketball“ assertEquals (4, sports.size ()); assertNotEquals (sports.get (1), "Basketbal");

2.2. Odstrániť podľa prvku

Ďalším spôsobom je odstrániť prvý výskyt prvku zo zoznamu pomocou tejto metódy. Formálne povedané, odstránime prvok s najnižším indexom, ak existuje, ak nie, zoznam sa nezmení:

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

3. Odstránenie pri iterácii

Niekedy chceme odstrániť prvok z ArrayList zatiaľ čo to opakujeme. Z dôvodu nevygenerovania ConcurrentModificationException, musíme použiť Iterátor triedy, aby to robili poriadne.

Pozrime sa, ako môžeme zbaviť sa prvku v slučke:

Iterátor iterátor = sports.iterator (); while (iterator.hasNext ()) {if (iterator.next (). equals ("Boxing")) {iterator.remove (); }}

4. ArrayList # removeIf (JDK 8+)

Ak používame JDK 8 alebo vyšší verzie, môžeme využiť výhody ArrayList #removeIf ktoré odstráni všetky prvky ArrayList ktoré vyhovujú danému predikátu.

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

Nakoniec to dokážeme pomocou knižníc tretích strán, ako je Apache Commons, a ak sa chceme dostať hlbšie, uvidíme, ako efektívne odstrániť všetky konkrétne výskyty.

5. Záver

V tomto tutoriáli sme sa pozreli na rôzne spôsoby odstránenia prvkov z ArrayList v Jave.

Ako obvykle sú všetky príklady použité v tomto výučbe dostupné na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found