TGViewer
Java Books Java Books @java_library · 14.2K subscribers
Post #670 6.52K
🔍 Enumeration vs Iterator в Java — в чём разница и что выбрать?

В Java есть два интерфейса для перебора элементов коллекций: Enumeration и Iterator. Оба позволяют пройтись по элементам, но у них разный синтаксис, возможности и история.

📌 1. Enumeration (старый интерфейс, до Java 2)

Используется в таких классах, как Vector и Hashtable.

🧪 Пример:

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

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


✅ Преимущества:
– Прост
– Меньше накладных расходов

❌ Недостатки:
– Только чтение: нельзя удалить элемент
– Устарел: используется в legacy-коде
– Не поддерживает коллекции из java.util (List, Set и т.п.)

📌 2. Iterator (введён в Java 2, заменил Enumeration)

Работает с большинством коллекций: ArrayList, HashSet, HashMap, и т.д.

🧪 Пример:


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

Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}


✅ Преимущества:
– Совместим с современными коллекциями
– Поддерживает удаление элементов во время итерации (it.remove())
– Поддерживает обобщения (generics)

❌ Недостатки:
– Немного более "шумный" синтаксис
– Не поддерживает безопасную модификацию (если изменить коллекцию вне итератора — будет ConcurrentModificationException)

🧠 Вывод:
Используй Iterator в 99% случаев. Enumeration пригодится только при работе со старыми структурами (Vector, Hashtable), либо в очень специфичных случаях.


// Лучше:
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String val = it.next();
if (val.equals("X")) it.remove();
}


Если нужен ещё более современный подход — смотри в сторону for-each, Stream API, и spliterator.


for (String item : list) {
System.out.println(item);
}

list.stream().forEach(System.out::println);


💡 Java развивается — пиши на ней современно.

@java_library
  • 👍 6
  • ⚡ 2
  • ❤ 2
  • 🔥 2
More from @java_library
  1. Sep 15, 2026Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение…
  2. Sep 12, 2026🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности http…
  3. Sep 10, 2026☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обход…
  4. Sep 10, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Sep 7, 2026☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали сис…
  6. Sep 6, 2026Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/j…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →