W programowaniu w języku Java, zarówno Iterator jak i Enumeration są interfejsami używanymi do iteracji po kolekcjach danych, takich jak listy, zbiory czy tablice. Chociaż oba służą podobnemu celowi, istnieją między nimi kluczowe różnice dotyczące funkcjonalności i bezpieczeństwa.
Iterator
Interfejs Iterator został wprowadzony w Java 2 i jest bardziej elastyczny oraz bezpieczny w porównaniu do Enumeration. Pozwala na bezpieczne usuwanie elementów z kolekcji podczas iteracji, co jest dużą zaletą w przypadku potrzeby modyfikacji kolekcji w trakcie przeglądania jej elementów.
Enumeration
Z kolei Enumeration pojawił się wcześniej, w JDK 1.0. Jest mniej elastyczny niż Iterator, ponieważ nie oferuje metody do usuwania elementów. Jest używany głównie do modelowania iteracji w starych API, takich jak te w Vector czy Hashtable, które były popularne przed wprowadzeniem kolekcji w Java 2.
Przykład użycia Iterator i Enumeration
Poniżej przedstawiam przykład kodu, który ilustruje różnice w użyciu Iterator i Enumeration przy iteracji przez kolekcję typu Vector.
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class CollectionDemo {
    public static void main(String[] args) {
        // Tworzenie wektora z elementami
        Vector<String> vector = new Vector<>();
        vector.add("Apple");
        vector.add("Banana");
        vector.add("Cherry");
        // Używanie Enumeration do wyświetlenia elementów
        Enumeration<String> enumeration = vector.elements();
        while (enumeration.hasMoreElements()) {
            String element = enumeration.nextElement();
            System.out.println("Element: " + element);
        }
        // Używanie Iterator do modyfikacji kolekcji
        Iterator<String> iterator = vector.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            if (element.equals("Banana")) {
                iterator.remove(); // Usuwanie elementu
            }
        }
        System.out.println("Vector after removal: " + vector);
    }
}
Podsumowanie
Iterator jest nowszym i bardziej zaawansowanym narzędziem do iteracji przez kolekcje w Java, oferującym większą elastyczność i bezpieczeństwo, głównie za sprawą możliwości modyfikacji kolekcji podczas iteracji. Enumeration choć starszy, nadal znajduje zastosowanie w legacy API. Współcześnie, jednak zaleca się używanie Iterator w nowych projektach ze względu na jego rozszerzone możliwości i większe bezpieczeństwo.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

