Iterators Java valodā
Iterators Java ir viens no visbiežāk izmantotajiem kursori Java kolekciju sistēmā . To izmanto, lai šķērsotu vai iterētu kolekcijas elementus pa vienam.
- To izmanto elementu pārvietošanai tikai uz priekšu.
- Droši noņem elementus šķērsošanas laikā, izmantojot Remove().
- Iterators ir universāls kursors, kas attiecas uz visiem kolekcijas veidiem — sarakstu kopu un rindu.
Iteratora deklarācija
publiskā interfeisa iterators
Šeit E apzīmē atkārtojamo elementu veidu.
Iteratora objekta izveide
Iteratora objekts tiek izveidots, kolekcijas objektā izsaucot iterator() metodi. Šeit mēs izmantosim iteratoru, lai šķērsotu un izdrukātu katru elementu ArrayList .
JavaKolekcija
nosaukumi = jauns ArrayList <>();
Iteratorsitr = nosaukumi.iterators();
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 ); } } }
Izvade
A B C
Iteratora hierarhija
Iterators ir daļa no java.util pakotne un to ievieš visas kolekcijas klases, izmantojot to apakšinterfeisus.
Iterators-kursors Iteratora saskarnes metodes
Iteratora saskarne definē trīs tālāk norādītās metodes.
- hasNext(): Atgriež patiesu, ja iterācijā ir vairāk elementu.
- nākamais (): Atgriež nākamo iterācijas elementu. Tas met NoSuchElementException ja vairs nav neviena elementa.
- noņemt (): Noņem pēdējo elementu, ko atgrieza next(). Šo metodi var izsaukt tikai vienu reizi vienā izsaukumā uz next().
Piezīme : metode remove() var radīt divus izņēmumus, proti:
Iekšējais darbs
Šajā sadaļā mēs centīsimies saprast, kā Java Iterator un tā metodes darbojas iekšēji. Lai saprastu šo funkcionalitāti, izmantosim šo LinkedList objektu.
1. darbība: Tagad izveidosim iteratora objektu saraksta objektā, kā parādīts zemāk:
Iterators
cityIterator = pilsētas.iterators();
"CitiesIteartor" iterators izskatīsies šādi:
1. darbība Šeit Iteratora kursors ir norādīts pirms saraksta pirmā elementa.
2. darbība: Tagad mēs izpildīsim šādu koda fragmentu.
cityIterator.hasNext();
cityIterator.next();
2. darbība Palaižot iepriekš minēto koda fragmentu, iteratora kursors norāda uz pirmo elementu sarakstā, kā parādīts iepriekš redzamajā diagrammā.
3. darbība: Tagad mēs izpildīsim šādu koda fragmentu.
cityIterator.hasNext();
cityIterator.next();
3. darbība
Palaižot iepriekš minēto koda fragmentu, Iteratora kursors norāda uz otro elementu sarakstā, kā parādīts iepriekš redzamajā diagrammā.
4. darbība: Veiciet šo procesu, lai sasniegtu iteratora kursoru līdz saraksta beigu elementam.
4. darbība 5. darbība: Pēc pēdējā elementa nolasīšanas, ja palaižam tālāk norādīto koda fragmentu, tas atgriež nepatiesu vērtību.
cityIterator.hasNext();
Kā Iteratora kursors norāda uz saraksta pēdējo elementu hasNext() metode atgriež nepatiesu vērtību.
Piezīme: Java Iterator atbalsta tikai uz priekšu vērstu iterāciju, tāpēc to sauc par vienvirziena kursoru. Turpretim ListIterator ir divvirzienu, kas ļauj pārvietoties abos virzienos.
Java iterators: virziens uz priekšu Piemērs: Šeit mēs izmantosim Iteratoru, lai šķērsotu un noņemtu nepāra elementus no 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 ); } }
Izvade
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]
Paskaidrojums: Iepriekš minētajā piemērā mēs izveidojam veselu skaitļu ArrayList, pēc tam atkārtojam to, izmantojot iteratoru, un noņem visus nepāra skaitļus. Tas izdrukā sarakstu pirms un pēc nepāra elementu noņemšanas un izdrukā modificēto sarakstu tikai ar pāra skaitļiem.