Java -итератор
Java-итератор
An Iterator
— это объект, который можно использовать для перебора коллекций, таких как ArrayList
и HashSet . Он называется «итератор», потому что «итерация» — это технический термин для циклов.
Чтобы использовать итератор, вы должны импортировать его из java.util
пакета.
Получение итератора
Метод iterator()
можно использовать для получения 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()
and класса :next()
Iterator
Пример
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 или цикла for-each не сработает правильно, потому что размер коллекции изменяется одновременно с кодом, пытающимся зациклиться.