Hoe de Iterator-methode te gebruiken om een ​​element uit een verzameling in Java te verwijderen?

Hoe De Iterator Methode Te Gebruiken Om Een Element Uit Een Verzameling In Java Te Verwijderen



De ' iterator ” methode biedt een veilige en gemakkelijke manier om specifieke gegevenselementen uit een verzameling te verwijderen of te verwijderen terwijl u eroverheen herhaalt. Het voorkomt het optreden van “ ConcurrentModificationException ' die ontstaat wanneer de verbeterde for-lus de verzameling probeert te wijzigen. Het slaat de track van de huidige positie op en biedt programmeurs de kans om verder te gaan en de onderliggende elementen indien nodig te verwijderen.

Deze blog demonstreert het proces om een ​​element uit een verzameling te verwijderen door gebruik te maken van de iteratormethode.







Hoe de Iterator-methode te gebruiken om een ​​element uit een verzameling in Java te verwijderen?

De iteratormethode is unidirectioneel en kan worden gebruikt met verschillende verzamelingstypen, waaronder ' ArrayList”, “LinkedList ”, enz. Het biedt een uniforme manier om elementen te verwijderen uit elke verzameling die de “ Itereerbaar ' koppel.



Laten we enkele voorbeelden bekijken om de iteratormethode beter te begrijpen:



Voorbeeld 1: specifieke elementen uit de verzameling verwijderen met behulp van de iteratormethode

De iteratormethode kan worden gebruikt met ' als ” statements of loops om de gespecificeerde elementen te selecteren. En dan de “ verwijderen ()'-methode wordt gebruikt om de verwijdering uit te voeren zoals hieronder weergegeven:





importeren java.util.* ;
klas IterExam
{
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten )
{
ArrayLijst < Geheel getal > demoArrLijst = nieuw ArrayLijst < Geheel getal > ( ) ;
voor ( int i = 0 ; i <= twintig ; i = i + 2 )
{
demoArrLijst. toevoegen ( i ) ;
}
Iterator < Geheel getal > het = demoArrLijst. iterator ( ) ;
Systeem . uit . println ( 'Geleverde ArrayList:' ) ;

voor ( int i = 0 ; i < demoArrLijst. maat ( ) ; i ++ )
{
Systeem . uit . afdrukken ( demoArrLijst. krijgen ( i ) + ' ' ) ;
}
terwijl ( het. heeftVolgende ( ) )
{
als ( het. volgende ( ) % 3 == 0 )
het. verwijderen ( ) ;
}
Systeem . uit . println ( ' \N Na het verwijderen van oneven ArrayList-elementen' ) ;
voor ( int i = 0 ; i < demoArrLijst. maat ( ) ; i ++ )
{
Systeem . uit . afdrukken ( demoArrLijst. krijgen ( i ) + ' ' ) ;
}
}
}

Beschrijving van de bovenstaande code:

  • Eerst wordt de ArrayList gemaakt en vervolgens een veelvoud van ' 2 ” wordt ingevoegd tot het bereik van “ twintig ” met behulp van de “ voor ” lus.
  • Verklaar vervolgens een ' iterator ” methodeobject om de elementen van ArrayList op de console weer te geven.
  • Maak dan gebruik van de “ heeftVolgende ()'-methode met het iterator-object om alle aanwezige ArrayList-elementen te doorlopen.
  • Daarna is de “ als ” verklaring wordt gebruikt om de elementen te controleren die volledig deelbaar zijn door “ 3 ' in het.
  • Dan de ' verwijderen ()' methode wordt gebruikt om de elementen te verwijderen die worden geretourneerd door de ' als ' stelling.
  • Uiteindelijk is de bijgewerkte ArrayList weergegeven met behulp van de ' voor ” lus.

Na de compilatie:



De uitvoer geeft de specifieke elementen weer, die deelbaar zijn door drie en verwijderd uit de ArrayList met behulp van een iteratormethode.

Voorbeeld 2: Alle elementen uit de collectie verwijderen

Om alle aanwezige elementen van de verzameling te verwijderen, kan de iteratormethode worden gebruikt in combinatie met zijn ' verwijderen ()'-methode zoals hieronder weergegeven:

importeren java.util.* ;
klas Leegte
{
openbaar statisch leegte voornaamst ( Snaar arg [ ] )
{
Vector < Geheel getal > testVector = nieuw Vector < Geheel getal > ( ) ;
  testVector. toevoegen ( 18 ) ;
  testVector. toevoegen ( eenentwintig ) ;
  testVector. toevoegen ( 25 ) ;
  testVector. toevoegen ( 27 ) ;
  testVector. toevoegen ( 30 ) ;

Iterator < Geheel getal > traverse = testVector. iterator ( ) ;
Systeem . uit . afdrukken ( 'Bestaande elementen:' ) ;
terwijl ( traverse. heeftVolgende ( ) )
Systeem . uit . afdrukken ( traverse. volgende ( ) + ' ' ) ;
Systeem . uit . afdrukken ( ' \N De testVector bevat ' + testVector. maat ( ) + ' elementen ' ) ;
traverse = testVector. iterator ( ) ;
terwijl ( traverse. heeftVolgende ( ) )
{
Systeem . uit . afdrukken ( ' \N Verwijderen ' + traverse. volgende ( ) ) ;
traverse. verwijderen ( ) ;
}
Systeem . uit . println ( ' \N Nu bevat de testVector ' + testVector. maat ( ) + 'elementen' ) ;
}
}

Beschrijving van code:

  • Verklaar en initialiseer eerst ' Vector ” met waarden van het dummy integer-type met behulp van de “ toevoegen ()”-methode.
  • Maak vervolgens een iteratormethode die de ' heeftVolgende ()' En ' volgende ()” methoden. Het toont de aanwezige gegevenselementen en hun overeenkomstige grootte.
  • Maak dan gebruik van de “ heeftVolgende ()' eigenschap langs het iterator-object binnen de ' terwijl ” lus.
  • Gebruik daarna de ' volgende ()'-methode om het komende element te selecteren en vervolgens de verwijderen () methode wordt aangeroepen om elk ontvangend element te verwijderen.
  • Op deze manier worden alle elementen van de vector verwijderd en wordt de grootte van de vector weergegeven op de console.

Beschrijving van code:

De bovenstaande code bevestigt dat alle elementen uit de verzameling zijn verwijderd.

Voorbeeld 3: Element verwijderen met ListIterator

De ListIterator werkt op dezelfde manier als de iterator-methode. De ListIterator beweegt aan beide zijden in voorwaartse en achterwaartse richting. Ga naar de onderstaande code om specifieke elementen uit de verzameling te verwijderen met behulp van de ListIterator in Java:

importeren java.util.ArrayList ;
importeren java.util.ListIterator ;
openbaar klas LijstIteratorDemo {

//De methode main() initialiseren
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten )
{ // De ArrayList declareren en initialiseren
ArrayLijst < Snaar > volwassen = nieuw ArrayLijst < Snaar > ( ) ;
volwassen toevoegen ( 'Capuchon' ) ;
volwassen toevoegen ( 'Pool' ) ;
volwassen toevoegen ( 'Henley's' ) ;
volwassen toevoegen ( 'Zweet' ) ;
volwassen toevoegen ( 'Casual' ) ;
volwassen toevoegen ( 'Luxe' ) ;
volwassen toevoegen ( 'Droogfit' ) ;


LijstIterator < Snaar > liter = volwassen lijstIterator ( ) ;
Systeem . uit . println ( 'Lijst vóór verwijdering' ) ;
voor ( int i = 0 ; i < volwassen maat ( ) ; i ++ )
Systeem . uit . afdrukken ( volwassen krijgen ( i ) + ' ' ) ;
terwijl ( liter. heeftVolgende ( ) ) {
als ( liter. volgende ( ) . gelijk aan ( 'Zweet' ) ) {
liter. verwijderen ( ) ;
}
}
Systeem . uit . println ( ' \N Lijst na verwijdering' ) ;
voor ( int i = 0 ; i < volwassen maat ( ) ; i ++ )
Systeem . uit . afdrukken ( volwassen krijgen ( i ) + ' ' ) ;
}
}

Beschrijving van de bovenstaande code:

  • Declareer en initialiseer eerst de ArrayList met de waarden van het dummy String-type en geef alle elementen op de console weer met behulp van de ' voor ” lus.
  • Maak vervolgens een object dat de ' heeftVolgende ()' methode binnen de ' terwijl ” lus. Het doorkruist alle woonelementen.
  • Dan de ' als ” statement wordt gebruikt dat elk element controleert met specifieke tekst, wanneer dat element overeenkomt met de “ verwijderen ()'-methode wordt aangeroepen. Het verwijdert het specifieke element uit de ' eenArt ” genaamd ArrayList.
  • Geef uiteindelijk de gewijzigde ArrayList op de console weer.

Na compilatie:

De momentopname bevestigt dat het opgegeven gegevenselement is verwijderd uit de verzameling met behulp van ListIterator.

Conclusie

Om het element uit een collectie te verwijderen, de ' verwijderen ()'-methode van de iterator wordt gebruikt. De iterator doorloopt de ArrayList om de beoogde gegevens te vinden. Zodra het is gevonden, wordt de ' verwijderen ()”-methode wordt gebruikt om dat specifieke gegevenselement te verwijderen. Het biedt een gestandaardiseerde techniek voor verschillende collecties en voorkomt problemen en het optreden van verschillende uitzonderingen zoals ' ConcurrentModificationException ”. Samen met het “ LijstIterator ” kan ook nuttig zijn.