Iterator v Javi
Iterator v Javi je eden najpogosteje uporabljenih kazalke v ogrodju zbirk Java . Uporablja se za prečkanje ali ponavljanje elementov zbirke enega za drugim.
- Uporablja se za premikanje elementov samo v smeri naprej.
- Varno odstrani elemente med prečkanjem s funkcijo remove().
- Iterator je univerzalni kazalec, ki se uporablja za vse vrste zbirk — seznam in čakalna vrsta.
Deklaracija iteratorja
Iterator javnega vmesnika
Tukaj E predstavlja vrsto elementov, ki jih je treba ponoviti.
Izdelava objekta iteratorja
Objekt Iterator se ustvari s klicem metode iterator() na objektu zbirke. Tukaj bomo uporabili iterator za prehod in tiskanje vsakega elementa v ArrayList .
JavaZbirka
imena = nov ArrayList <>();
Iteratoritr = names.iterator();
import java.util.ArrayList ; import java.util.Iterator ; public class Geeks { public static void main ( String [] args ) { // Create an ArrayList and add some elements ArrayList < String > al = new ArrayList <> (); al . add ( 'A' ); al . add ( 'B' ); al . add ( 'C' ); // Obtain an iterator for the ArrayList Iterator < String > it = al . iterator (); // Iterate through the elements and print each one while ( it . hasNext ()) { // Get the next element String n = it . next (); System . out . println ( n ); } } }
Izhod
A B C
Hierarhija Iteratorja
Iterator je del paket java.util izvajajo pa ga vsi razredi zbirke prek svojih podvmesnikov.
Iterator-kurzor Metode vmesnika iteratorja
Vmesnik iteratorja definira tri spodaj navedene metode:
- hasNext(): Vrne true, če ima ponovitev več elementov.
- naslednji(): Vrne naslednji element v ponovitvi. Vrže NoSuchElementException če ni prisotnega več elementa.
- odstrani(): Odstrani zadnji element, ki ga vrne next(). To metodo lahko pokličete samo enkrat na klic next().
Opomba : metoda remove() lahko povzroči dve izjemi, in sicer kot sledi:
Notranje delo
V tem razdelku bomo poskušali razumeti, kako Java Iterator in njegove metode delujejo interno. Za razumevanje te funkcije vzemimo naslednji objekt LinkedList.
1. korak: Zdaj pa ustvarimo objekt Iterator na objektu List, kot je prikazano spodaj:
Iterator
placesIterator = mesta.iterator();
Iterator 'citiesIteartor' bo videti takole:
1. korak Tukaj iteratorjev kazalec kaže pred prvim elementom seznama.
2. korak: Zdaj bomo zagnali naslednji delček kode.
cityIterator.hasNext();
cityIterator.next();
2. korak Ko zaženemo zgornji delček kode, kazalec iteratorja kaže na prvi element na seznamu, kot je prikazano v zgornjem diagramu.
3. korak: Zdaj bomo zagnali naslednji delček kode.
cityIterator.hasNext();
cityIterator.next();
3. korak
Ko zaženemo zgornji delček kode, kazalec Iteratorja kaže na drugi element na seznamu, kot je prikazano v zgornjem diagramu.
4. korak: Izvedite ta postopek, da dosežete kazalec iteratorja do končnega elementa seznama.
4. korak 5. korak: Ko preberemo končni element, če zaženemo spodnji delček kode, ta vrne napačno vrednost.
cityIterator.hasNext();
Ker kazalec iteratorja kaže na za končnim elementom seznama hasNext() metoda vrne napačno vrednost.
Opomba: Java Iterator podpira samo iteracijo v smeri naprej, zato je znan kot enosmerni kazalec. V nasprotju s tem je ListIterator dvosmeren in omogoča prečkanje v obe smeri.
Java Iterator: smer naprej primer: Tukaj bomo uporabili Iterator za prečkanje in odstranjevanje lihih elementov iz ArrayList.
Java import java.util.ArrayList ; import java.util.Iterator ; public class Geeks { public static void main ( String [] args ) { // Creating an ArrayList of Integer type ArrayList < Integer > al = new ArrayList <> (); // Adding elements to the ArrayList for ( int i = 0 ; i < 10 ; i ++ ) { al . add ( i ); } // Printing the original list System . out . println ( 'Original List: ' + al ); // Creating an Iterator for the ArrayList Iterator < Integer > itr = al . iterator (); // Iterating through the list and removing odd elements while ( itr . hasNext ()) { // Getting the next element int i = itr . next (); System . out . print ( i + ' ' ); // Removing odd elements if ( i % 2 != 0 ) { itr . remove (); } } System . out . println (); // Printing the modified list after removal of odd elements System . out . println ( 'Modified List: ' + al ); } }
Izhod
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]
Pojasnilo: V zgornjem primeru ustvarimo ArrayList celih števil, nato ga ponovimo z uporabo Iteratorja in odstranimo vsa liha števila. Natisne seznam pred in po odstranitvi lihih elementov in natisne spremenjen seznam samo s sodimi številkami.