Назад к вопросам
Middle
69
questionbank

В чем различия между Enumeration и Iterator?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Enumeration — предшественник Iterator в Java Collection Framework.

Основные отличия:

Критерий Enumeration Iterator
Методы hasMoreElements(), nextElement() hasNext(), next(), remove()
Возможность удаления Нет Есть (remove())
Поведение Fail-Fast Нет Есть (бросает ConcurrentModificationException при изменении коллекции во время итерации)
Применимость Старые классы (например, Vector, Hashtable) Все коллекции с Java 1.2 и выше

Пример использования Enumeration:

// import java.util.Enumeration;
// import java.util.Vector;

// Vector<String> vector = new Vector<>();
// vector.add("A");
// vector.add("B");

// Enumeration<String> enumeration = vector.elements();
// while (enumeration.hasMoreElements()) {
//     System.out.println(enumeration.nextElement());
// }

Пример использования Iterator:

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

// ArrayList<String> list = new ArrayList<>();
// list.add("X");
// list.add("Y");

// Iterator<String> iterator = list.iterator();
// while (iterator.hasNext()) {
//     String element = iterator.next();
//     System.out.println(element);
//     // iterator.remove(); // Можно удалять элементы
// }

Iterator предпочтительнее в современном коде из-за его улучшенной функциональности (возможность удаления, fail-fast поведение) и повсеместной поддержки в Collection Framework. Enumeration используется в основном для совместимости с устаревшим кодом.