Kako odstraniti element iz ArrayList v Javi?
ArrayList je del okvir zbiranja in je prisoten v paketu java.util. Zagotavlja nam dinamična polja v Javi. Čeprav je morda počasnejši od standardnih nizov, je lahko koristen v programih, kjer je potrebnih veliko manipulacij z nizom. Ta razred najdemo v java.util paket. Z uvedbo in nadgradnjami v različicah Jave so na voljo novejše metode, če vidimo iz Jave8 zaznavni lambda izrazi in koncepti tokov pred tem niso bili na voljo, saj je bilo uvedeno v Javi različica8, zato imamo več načinov za delovanje prek Arraylist za izvajati operacije. Tukaj bomo razpravljali o načinu odstranitve elementa iz seznama ArrayList.
Med odstranjevanjem elementov iz seznama ArrayList lahko odstranimo elemente prek indeksov ali prek vrednosti, ki so tam v seznamu ArrayList. Razpravljali bomo o obeh načinih prek tolmačenja s čistim programom java.
Metode:
obstajajo 3 načini za odstranitev elementa iz ArrayList kot je navedeno, kar bo kasneje razkrito na naslednji način:
- Uporaba metode remove() z indeksi (privzeto)
- Uporaba metode remove() po vrednostih
- Uporaba metode remove() nad iteratorji
Opomba: Pri ponavljanju elementov ni priporočljivo uporabljati ArrayList.remove().
1. način: Uporaba metode remove() z indeksi
To je privzeta metoda, takoj ko uporabimo katero koli metodo nad podatkovno strukturo, v bistvu deluje samo nad indeksi, tako da vsakič, ko uporabimo metodo remove(), v bistvu odstranjujemo elemente iz indeksov iz ArrayList.
Razred ArrayList nudi dve preobremenjeni metodi remove().
- remove(int index): Sprejme indeks predmeta, ki ga želite odstraniti
- remove(Object obj): Sprejme predmet, ki ga želite odstraniti
Ugotovimo s pomočjo spodnjih primerov, kot sledi:
primer:
Java
// Java program to Remove Elements from ArrayList> // Using remove() method by indices> > // Importing required classes> import> java.util.ArrayList;> import> java.util.List;> > // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an object of List interface with> > // reference to ArrayList class> > List al => new> ArrayList();> > > // Adding elements to our ArrayList> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // This makes a call to remove(int) and> > // removes element 20> > al.remove(> 1> );> > > // Now element 30 is moved one position back> > // So element 30 is removed this time> > al.remove(> 1> );> > > // Printing the updated ArrayList> > System.out.println(al);> > }> }> |
Izhod
[10, 20, 30, 1, 2] [10, 1, 2]
Zdaj smo videli odstranjevanje elementov v ArrayList prek zgornjih indeksov, zdaj pa poglejmo, da se posredovani parameter šteje za indeks. Kako odstraniti elemente po vrednosti.
2. način: Uporaba metode remove() po vrednostih
primer:
Java
// Java program to Remove Elements from ArrayList> // Using remove() method by values> > // Importing required classes> import> java.util.ArrayList;> import> java.util.List;> > // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an object of List interface with> > // reference to ArrayList> > List al => new> ArrayList();> > > // Adding elements to ArrayList class> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // This makes a call to remove(Object) and> > // removes element 1> > al.remove(Integer.valueOf(> 1> ));> > > // This makes a call to remove(Object) and> > // removes element 2> > al.remove(Integer.valueOf(> 2> ));> > > // Printing the modified ArrayList> > System.out.println(al);> > }> }> |
Izhod:
[10, 20, 30,1 ,2] [10, 20, 30]
Opomba: Pri ponavljanju elementov ni priporočljivo uporabljati ArrayList.remove().
Tudi novi Integer( int_value) je bil od Jave 9 opuščen, zato je bolje uporabiti Integer.valueOf(int_value) za pretvorbo primitivnega celega števila v Integer Object.
3. način: Uporaba metode Iterator.remove().
To lahko vodi do ConcurrentModificationException Pri ponavljanju elementov je priporočljiva uporaba Iterator.remove() metoda.
primer:
Java
// Java program to demonstrate working of> // Iterator.remove() on an integer ArrayList> import> java.util.ArrayList;> import> java.util.Iterator;> import> java.util.List;> > public> class> GFG {> > > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an ArrayList> > List al => new> ArrayList();> > > // Adding elements to our ArrayList> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // Creating iterator object> > Iterator itr = al.iterator();> > > // Holds true till there is single element> > // remaining in the object> > while> (itr.hasNext()) {> > > // Remove elements smaller than 10 using> > // Iterator.remove()> > int> x = (Integer)itr.next();> > if> (x <> 10> )> > itr.remove();> > }> > > // Printing the updated ArrayList> > System.out.print(al);> > }> }> |
Izhod
[10, 20, 30, 1, 2] [10, 20, 30]