Hvordan fjerne et element fra ArrayList i Java?

ArrayList er en del av innsamlingsramme og finnes i java.util-pakken. Det gir oss dynamiske arrays i Java. Skjønt, det kan være tregere enn standard arrays, men kan være nyttig i programmer der mye manipulasjon i arrayen er nødvendig. Denne klassen finnes i java.util pakke. Med introduksjonen og oppgraderingene i java-versjoner blir nyere metoder tilgjengelige hvis vi ser fra Java8 at oppfattende lambda-uttrykk og strømmer ikke var tilgjengelige før det ble introdusert i java-versjon8, så har vi flere måter å operere over Arraylist for å utføre operasjoner. Her skal vi diskutere en måte å fjerne et element fra en ArrayList.

Mens vi fjerner elementer fra ArrayList, kan vi enten operere for å fjerne elementer over indekser eller via verdier vært der i en ArrayList. Vi vil diskutere begge veier via tolking gjennom et rent java-program.

Metoder:

Det er 3 måter å fjerne et element fra ArrayList som oppført som senere vil bli avslørt som følger:

  1. Bruke remove()-metoden av indexes(standard)
  2. Bruke remove()-metoden etter verdier
  3. Bruke remove()-metoden over iteratorer

Merk: Det anbefales ikke å bruke ArrayList.remove() når du itererer over elementer.

Metode 1: Bruke remove()-metoden av indekser

Det er en standardmetode så snart vi bruker en metode over datastruktur, fungerer den i utgangspunktet bare over indekser, så hver gang vi bruker remove()-metoden fjerner vi i utgangspunktet elementer fra indekser fra en ArrayList.

ArrayList klasse gir to overbelastede remove()-metoder.

  • remove(int index): Godtar indeksen til objektet som skal fjernes
  • remove(Object obj): Godtar objektet som skal fjernes

La oss finne ut ved hjelp av eksempler gitt nedenfor som følger:

Eksempel:

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);> > }> }>

Produksjon

[10, 20, 30, 1, 2] [10, 1, 2] 

Nå har vi sett fjerning av elementer i en ArrayList via indekser ovenfor, la oss nå se at den beståtte parameteren betraktes som en indeks. Hvordan fjerne elementer etter verdi.

Metode 2: Bruke remove()-metoden etter verdier

Eksempel:

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);> > }> }>

Utgang:

[10, 20, 30,1 ,2] [10, 20, 30] 

Merk: Det anbefales ikke å bruke ArrayList.remove() når du itererer over elementer.

Også nytt Integer(int_value) har blitt avviklet siden Java 9, så det er bedre å bruke Integer.valueOf(int_value) for å konvertere et primitivt heltall til Integer Object.

Metode 3: Bruker Iterator.remove() metoden

Dette kan føre til ConcurrentModificationException Ved iterasjon over elementer anbefales det å bruke Iterator.remove() metode.

Eksempel:

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);> > }> }>

Produksjon

[10, 20, 30, 1, 2] [10, 20, 30]