„ iterator ” oferă o modalitate sigură și ușoară de a elimina sau șterge anumite elemente de date dintr-o colecție în timp ce se repetă peste aceasta. Previne apariția „ ConcurrentModificationException ” care apare atunci când bucla for îmbunătățită încearcă să modifice colecția. Acesta stochează evidența poziției curente și oferă programatorilor șansa de a avansa și de a elimina elementele de bază după cum este necesar.
Acest blog demonstrează procesul de eliminare a unui element dintr-o colecție prin utilizarea metodei iteratorului.
Cum să utilizați metoda Iterator pentru a elimina un element dintr-o colecție în Java?
Metoda iteratorului este unidirecțională și poate fi utilizată cu diferite tipuri de colecție, inclusiv „ ArrayList”, „LinkedList ”, etc. Oferă o modalitate uniformă de a elimina elemente din orice colecție care implementează „ Iterabil ” interfață.
Să vizităm câteva exemple pentru a înțelege mai bine metoda iteratorului:
Exemplul 1: Eliminarea elementelor specifice din colecție utilizând metoda iteratorului
Metoda iteratorului poate fi utilizată cu „ dacă ” instrucțiuni sau bucle pentru a selecta elementele specificate. Și apoi „ elimina ()” este utilizată pentru a efectua operația de ștergere, după cum se arată mai jos:
import java.util.* ;
clasă IterExam
{
public static vid principal ( Şir [ ] argumente )
{
ArrayList < Întreg > demoArrList = nou ArrayList < Întreg > ( ) ;
pentru ( int i = 0 ; i <= douăzeci ; i = i + 2 )
{
demoArrList. adăuga ( i ) ;
}
Iterator < Întreg > itr = demoArrList. iterator ( ) ;
Sistem . afară . println ( „Lista de matrice furnizată:” ) ;
pentru ( int i = 0 ; i < demoArrList. mărimea ( ) ; i ++ )
{
Sistem . afară . imprimare ( demoArrList. obține ( i ) + ' ' ) ;
}
in timp ce ( itr. areNext ( ) )
{
dacă ( itr. Următorul ( ) % 3 == 0 )
itr. elimina ( ) ;
}
Sistem . afară . println ( ' \n După eliminarea elementelor ArrayList impare' ) ;
pentru ( int i = 0 ; i < demoArrList. mărimea ( ) ; i ++ )
{
Sistem . afară . imprimare ( demoArrList. obține ( i ) + ' ' ) ;
}
}
}
Descrierea codului de mai sus:
- Mai întâi, este creată ArrayList și apoi un multiplu de „ 2 ” este inserat până în intervalul „ douăzeci ' cu ajutorul ' pentru ” buclă.
- Apoi, declarați un „ iterator ” obiect metoda pentru a afișa elementele ArrayList pe consolă.
- Apoi, utilizați „ areNext ()” cu obiectul iterator pentru a parcurge toate elementele ArrayList rezidente.
- După aceea, „ dacă ” declarația este utilizată pentru a verifica elementele care sunt complet divizibile cu ” 3 ' inauntru.
- Apoi, „ elimina ()” este folosită pentru a șterge elementele care sunt returnate de „ dacă ' afirmație.
- În cele din urmă, ArrayList actualizat a fost afișat folosind „ pentru ” buclă.
După compilare:
Ieșirea afișează elementele specifice, care sunt divizibile cu trei și eliminate din ArrayList folosind o metodă iteratoare.
Exemplul 2: Eliminarea tuturor elementelor din colecție
Pentru a elimina toate elementele rezidente ale colecției, metoda iteratorului poate fi utilizată împreună cu „ elimina ()” metoda după cum se arată mai jos:
import java.util.* ;clasă Goliciunea
{
public static vid principal ( Şir arg [ ] )
{
Vector < Întreg > testVector = nou Vector < Întreg > ( ) ;
testVector. adăuga ( 18 ) ;
testVector. adăuga ( douăzeci și unu ) ;
testVector. adăuga ( 25 ) ;
testVector. adăuga ( 27 ) ;
testVector. adăuga ( 30 ) ;
Iterator < Întreg > traversa = testVector. iterator ( ) ;
Sistem . afară . imprimare ( „Elemente existente:” ) ;
in timp ce ( traversa. areNext ( ) )
Sistem . afară . imprimare ( traversa. Următorul ( ) + ' ' ) ;
Sistem . afară . imprimare ( ' \n TestVector conține „ + testVector. mărimea ( ) + 'elemente' ) ;
traversa = testVector. iterator ( ) ;
in timp ce ( traversa. areNext ( ) )
{
Sistem . afară . imprimare ( ' \n eliminarea' + traversa. Următorul ( ) ) ;
traversa. elimina ( ) ;
}
Sistem . afară . println ( ' \n Acum, testVector conține „ + testVector. mărimea ( ) + 'elemente' ) ;
}
}
Descrierea codului:
- Mai întâi, declarați și inițializați „ Vector ” cu valori de tip întreg inactiv folosind „ adăuga ()” metoda.
- Apoi, creați o metodă iteratoare care utilizează „ areNext ()' și ' Următorul ()” metode. Afișează elementele de date rezidente și dimensiunea lor corespunzătoare.
- Apoi, utilizați „ areNext ()” de-a lungul obiectului iterator din interiorul „ in timp ce ” buclă.
- După aceea, utilizați „ Următorul ()” pentru a selecta elementul viitor și apoi, elimina () este apelată pentru a șterge fiecare element de primire.
- În acest fel, toate elementele Vectorului sunt eliminate și dimensiunea Vectorului este afișată pe consolă.
Descrierea codului:
Codul de mai sus confirmă că toate elementele din colecție au fost eliminate.
Exemplul 3: Eliminarea elementului folosind ListIterator
ListIterator funcționează similar cu metoda iteratorului. ListIterator efectuează traversarea pe ambele părți în direcțiile înainte și înapoi. Pentru a elimina anumite elemente din colecție folosind ListIterator în Java, accesați codul de mai jos:
import java.util.ArrayList ;import java.util.ListIterator ;
public clasă ListIteratorDemo {
//Inițializarea metodei main().
public static gol principal ( Şir [ ] argumente )
{ //Declararea și inițializarea ArrayList
ArrayList < Şir > maturizat = nou ArrayList < Şir > ( ) ;
maturizat adăuga ( 'Hanorac cu gluga' ) ;
maturizat adăuga ( 'Pol' ) ;
maturizat adăuga ( 'Henleys' ) ;
maturizat adăuga ( 'Sudoare' ) ;
maturizat adăuga ( 'ocazional' ) ;
maturizat adăuga ( 'Luxos' ) ;
maturizat adăuga ( 'Dryfit' ) ;
ListIterator < Şir > litru = maturizat listIterator ( ) ;
Sistem . afară . println ( „Lista înainte de eliminare” ) ;
pentru ( int i = 0 ; i < maturizat mărimea ( ) ; i ++ )
Sistem . afară . imprimare ( maturizat obține ( i ) + ' ' ) ;
in timp ce ( litru. areNext ( ) ) {
dacă ( litru. Următorul ( ) . egală ( 'Sudoare' ) ) {
litru. elimina ( ) ;
}
}
Sistem . afară . println ( ' \n Lista după eliminare' ) ;
pentru ( int i = 0 ; i < maturizat mărimea ( ) ; i ++ )
Sistem . afară . imprimare ( maturizat obține ( i ) + ' ' ) ;
}
}
Descrierea codului de mai sus:
- Mai întâi, declarați și inițializați ArrayList cu valorile de tip String false și afișați toate elementele pe consolă folosind „ pentru ” buclă.
- Apoi, creați un obiect care numește „ areNext ()” metoda din interiorul „ in timp ce ” buclă. Acesta traversează toate elementele rezidente.
- Apoi, „ dacă ” este folosită instrucțiunea care verifică fiecare element cu un text specific, atunci când acel element se potrivește cu „ elimina ()” se numește metoda. Acesta șterge elementul specific din „ aArt ” numit ArrayList.
- La final, afișați ArrayList modificat pe consolă.
După compilare:
Instantaneul confirmă că elementul de date specificat a fost eliminat din colecție folosind ListIterator.
Concluzie
Pentru a elimina elementul dintr-o colecție, „ elimina ()” este utilizată metoda iteratorului. Iteratorul traversează ArrayList pentru a găsi datele vizate. Odată ce este găsit „ elimina ()” este utilizată pentru a elimina acel element de date specific. Oferă o tehnică standardizată în diferite colecții și previne problemele și apariția mai multor excepții precum „ ConcurrentModificationException ”. Alături de acesta, „ ListIterator ” poate fi, de asemenea, de ajutor.