Java Iterator

Оновлено: 22.05.2023

Ітератор Java

Ітератор - це об'єкт, який можна використовувати для циклічного перегляду колекцій, таких як ArrayList і HashSet. Він називається "ітератором", тому що "ітерація" - це технічний термін для циклів.

Щоб використовувати ітератор, ви повинні імпортувати його з пакета java.util.

Отримання ітератора

Метод iterator() можна використовувати для отримання ітератора для будь-якої колекції:

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

Циклічний перегляд колекції

Для циклічного перегляду колекції використовуйте методи hasNext() та next() ітератора:

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

Видалення елементів з колекції

Ітератори призначені для того, щоб легко змінювати колекції, через які вони циклічно проходять. Метод remove() може видаляти елементи з колекції під час циклу.

Використовуйте ітератор, щоб видалити з колекції числа, менші за 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);
  }
}
Примітка: Спроба видалити елементи за допомогою циклу for або циклу для кожного не спрацює коректно, оскільки колекція змінює розмір одночасно з тим, як код намагається зациклитися.