Java Iterator


Java Iterator

An Iteratorje objekt, který lze použít k procházení kolekcí, jako je ArrayList a HashSet . Říká se tomu „iterátor“, protože „iterace“ je technický termín pro opakování.

Chcete-li použít iterátor, musíte jej importovat z java.utilbalíčku.


Získání iterátoru

Metodu iterator()lze použít k získání Iteratorpro jakoukoli kolekci:

Příklad

// Import the ArrayList class and the Iterator class
import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {

    // Make a collection
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");

    // Get the iterator
    Iterator<String> it = cars.iterator();

    // Print the first item
    System.out.println(it.next());
  }
}


Procházení sbírkou

Chcete-li procházet kolekcí, použijte metody hasNext()a next()metody Iterator:

Příklad

while(it.hasNext()) {
  System.out.println(it.next());
}


Odebrání položek ze sbírky

Iterátory jsou navrženy tak, aby snadno měnily kolekce, kterými prochází. Metoda remove()může odstranit položky z kolekce při opakování.

Příklad

Pomocí iterátoru odstraňte z kolekce čísla menší než 10:

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(12);
    numbers.add(8);
    numbers.add(2);
    numbers.add(23);
    Iterator<Integer> it = numbers.iterator();
    while(it.hasNext()) {
      Integer i = it.next();
      if(i < 10) {
        it.remove();
      }
    }
    System.out.println(numbers);
  }
}

Poznámka: Pokus o odstranění položek pomocí cyklu for nebo cyklu for-each by nefungoval správně, protože kolekce mění velikost ve stejnou dobu, kdy se kód pokouší vytvořit smyčku.