Iterator Javy


Iterator Javy

An Iteratorto obiekt, którego można używać do przeglądania kolekcji, takich jak ArrayList i HashSet . Nazywa się to „iteratorem”, ponieważ „iteracja” jest terminem technicznym oznaczającym pętlę.

Aby użyć iteratora, musisz go zaimportować z java.utilpakietu.


Uzyskiwanie iteratora

Metodę iterator()można wykorzystać do pobrania Iteratordla dowolnej kolekcji:

Przykład

// 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());
  }
}


Zapętlanie kolekcji

Aby przejść przez kolekcję, użyj metod hasNext()i :next()Iterator

Przykład

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


Usuwanie pozycji z kolekcji

Iteratory są zaprojektowane tak, aby łatwo zmieniać kolekcje, przez które przechodzą. Metoda remove()może usuwać elementy z kolekcji podczas zapętlania.

Przykład

Użyj iteratora, aby usunąć liczby mniejsze niż 10 z kolekcji:

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);
  }
}

Uwaga: próba usunięcia elementów za pomocą pętli for lub pętli for-each nie zadziałałaby poprawnie, ponieważ kolekcja zmienia rozmiar w tym samym czasie, w którym kod próbuje zapętlić.