Szia! A mai leckében a Java Iteratorról fogunk beszélni. Képzeld el, hogy bemész a könyvtárba, és meg akarsz találni egy bizonyos könyvet. Hogyan csinálod? Ha nem fikcióról van szó, ott van a Dewey decimális rendszer. Ha fikcióról van szó, akkor vezetéknevük szerint vannak ábécé sorrendben rendezve. Bármit is keresel, egy bizonyos ponton egyenként végig kell menned a könyveken, amíg meg nem találod, amit keresel. Ha van dolgok gyűjteménye a Java-ban, akár egy tömbben , egy ArrayList- ben , egy várólista vagy egy listában van tárolva , hogyan találhat meg egy adott értéket? Valamikor az egyes elemeken egyenként kell végigmenni. Erre való a Java iterátor.

Mi az Iterátor a Java nyelven
Mi az iterátor a Java nyelven? Ez egy módja annak, hogy a gyűjtemény minden elemét megvizsgáljuk. Gyűjtemény alatt pedig bármit értünk a Gyűjtemény osztályon belül. Ebbe beletartozik:- Tömb lista
- HashSet
- LinkedHashSet
- LinkedList
- PriorityQueue
- Vektor
- és sokan mások…
Miért ne használja a For Loops iterátort a Java nyelven?
Az egyik első módszer, amellyel mindenkit megtanítanak a Java gyűjteményben való iterációra, a ciklus. Ez így néz ki:
class Main {
public static void main(String[] args) {
int exampleArray[] = new int[10];
//fill array with data
for(int x = 0; x < exampleArray.length; x++) {
System.out.println("Content of element " + x + "is: " + exampleArray[x]);
}
}
}
A kimenet egy lista lenne, amely így szól:
Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
Ennek megvan a maga haszna, de mi történik, ha a gyűjtemény nem tárol elemeket egy index alapú rendszerben? Például a készleteknek nincs rendje rendesen. Ezért tanácsos kilépni abból a gyakorlatból, hogy a for ciklust iterátorként használja Java nyelven, és inkább az Iterator<E> osztály használatát gyakorolja. Íme néhány példa a java iterátorokra.
Az Iterator használata Java-ban
Íme néhány példa az iterátor használatára Java nyelven. Az iterátor osztály használatakor háromféleképpen lehet bejárni egy gyűjteményt. Használhat while() ciklust, for() ciklust és forEach() ciklust. Vegye figyelembe, hogy ez a for ciklus eltér attól, amelyről korábban beszéltünk. Íme a három különböző Java-iterátor példa. Először állítsuk be a Gyűjteményt az iterációhoz.
import java.util.*; // imports ArrayList, Collection and Iterator
class Main {
public static void main(String[] args) {
Collection<String> example = new ArrayList<String>();
example.add("Item 1");
example.add("Item 2");
example.add("Item 3");
example.add("Item 4");
}
}
Ez egy egyszerű gyűjtemény , amely egy ArrayListből áll, amelybe négy elemet töltöttünk be. Most nézzük meg az Iterator osztály három módszerét az ArrayList bejárására .
While() ciklus
Iterator<String> iterator = example.iterator();
while (iterator.hasNext()) {
System.out.println("Element Value= " + iterator.next());
}
Ez a while() ciklus az Iterator osztály .hasNext() logikai metódusát használja annak ellenőrzésére, hogy van-e jövőbeli elem. Ha az előfeltétel teljesül, akkor megy tovább. Ha hamisként tér vissza, akkor a ciklus véget ér. A legfontosabb dolog itt az, hogy a .hasNext() és a .next() metódus is elvégzi az első elem kezdeti ellenőrzését. Ha a gyűjtemény üres, és nincs első elem, akkor a metódus false értéket ad vissza a .hasNext()- hez, és egy NoSuchElementException-t dob a .next() metódushoz.
A hurokhoz
for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
System.out.println("Element Value= " + iterator.next());
}
Ez egy hagyományosabb for ciklusnak tűnik. A .hasNext() metódust használja állapotellenőrző és -módosítási részként. Az inicializálás az Iterátor hívása.
For:Minden hurok
for (String s : example) {
System.out.println("Element Value= " + s);
}
A For:Each ciklus egy for ciklus, de ha nem tudod, hogyan kell olvasni, akkor kissé zavaró lehet. A For:Each ciklus szintaxisa a következőre vonatkozik: (data_type variableName : collectionName){ body} . Ennek : minden ciklusnak van néhány hátránya. Először is, csak egy irányba képes áthaladni a gyűjteményen. Másodszor, meg kell ismételnie az egyes elemeket. Nem hagyhatod ki egyiket sem. De kényelmes listaiterátorként a Java-ban ez a legjobb megoldás. Pozitívum, hogy a for:each ciklus nagyon könnyen olvasható, és ha egyszer ismered, nehéz tévedni. Ha kíváncsi arra, hogy mi a három iterátorhurok kimenete, mindegyik ugyanaz:
Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4
Hogyan használjunk Iterátort a Java For Maps programban
A térképek az adatok tárolásának népszerű módja, de mivel nem terjesztik ki a Gyűjteményt , nem használhatja a korábbi iterátorokat a térkép közvetlen bejárására. Tehát hogyan használhatja a Java iterátort a Map s és a HashMap s áthaladásához ? Négy jó Java térképiterátor módszer létezik. Egyenként fogjuk kitérni rájuk. Először töltsünk be egy térképet értékek sorozatával.
import java.util.*; //imports Map and HashMap
class Main {
public static void main(String[] args) {
Map<String, String> example = new HashMap<String, String>();
example.put("alpha", "one");
example.put("beta", "two");
example.put("gamma", "three");
}
}
Java Hashmap Iterator módszer: forEach(action)
example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
Ez a módszer lambda kifejezést használ az iterációhoz. A lambda operátor a forEach() metódus, és a törzs kiírja az értékeket. Ez többparaméteres operátort használ. Ez a leggyorsabb és legtisztább módszer a Java 8 térképiterátorához.
Java Hashmap Iterator módszer: For:Each() Loop
for (Map.Entry<String, String> iterate : example.entrySet()) {
System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
Ez a For:Each szintaxist használja az enterSet() metódus meghívására, és olyan halmazt ad vissza, amelynek elemei a kulcs és az érték. Ezenkívül az .Entry() metódus használatakor az objektumok csak az iteráció során igazak.
Java Hashmap Iterator módszer: Map.Entry<k, v>
Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String, String> element = iterator.next();
System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
Ez a módszer ismét egy halmazzá alakítja a térképet a gyűjtemények iterátorának és metódusainak használatához . A három iterátor metódus esetében a visszatérés így néz ki:
Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
System.out.println("Key: " + key);
}
for (String value : example.values()) {
System.out.println("Value: " + value);
}
Ez más módon adja vissza az elemeket. Először az összes kulcsot sorrendben adja vissza, majd az összes értéket:
Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
GO TO FULL VERSION