John Squirrels
Szint
San Francisco

Java Iterator

Megjelent a csoportban
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.A Java Iterator használata: Rövid bemutató - 1

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…
Tartalmazza ezen osztályok különféle felületeit is, mint például a Set , List , Queue , Dequeue és Sorted Set , hogy csak néhányat említsünk. Az Iterator<E> az Interface Iterator<E> osztály nyilvános interfész metódusa . A Java 1.2-ben hozták létre, és az Enumeration helyett a gyűjtemény szekvenciális elemeinek vizsgálatára szolgál.

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
Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései