Назад к вопросам
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 используется в основном для совместимости с устаревшим кодом.