Перечисление (Enumeration) и итератор (Iterator) - это два разных подхода к обходу элементов в коллекции, которые используются в Java.
Перечисление (Enumeration) - это устаревший интерфейс, который появился в Java 1.0 и предоставляет простой способ обхода элементов в коллекции. Он имеет следующие особенности:
Методы перечисления ограничены пакетной видимостью, это значит, что он не может быть использован вне пакета, в котором был создан. Перечисление позволяет только перебирать элементы коллекции, но не изменять или удалять их. Перечисление может быть применено только к определённым типам данных, таким как Vector и Hashtable. Пример использования перечисления:
Vector<String> vector = new Vector<>();
vector.add("apple");
vector.add("banana");
vector.add("cherry");
Enumeration<String> enumeration = vector.elements();
while (enumeration.hasMoreElements()) {
String element = enumeration.nextElement();
System.out.println(element);
}
Итератор (Iterator) - это более новый подход к обходу элементов в коллекции, который появился в Java 1.2. Он имеет следующие особенности:
Итератор является более гибким, чем перечисление, потому что он позволяет изменять и удалять элементы коллекции во время ее перебора. Итератор может быть применен к любому типу данных, реализующему интерфейс Iterable (например, List, Set, Map). Пример использования итератора:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
Таким образом, основная разница между перечислением и итератором заключается в том, что итератор более гибок и позволяет изменять и удалять элементы коллекции во время её перебора. К тому же, итератор может быть использован для любого типа данных, реализующего интерфейс Iterable, в то время как перечисление может быть применено только к определенным типам данных. Однако, если не требуется изменять или удалять элементы коллекции во время ее перебора, то перечисление может быть более удобным способом.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov