W Javie, zarówno Iterator
jak i Enumeration
służą do przeglądania kolekcji danych, ale istnieją między nimi kluczowe różnice, które wpływają na sposób ich używania oraz wydajność. W tym artykule przedstawię te różnice na przykładzie praktycznym, wykorzystując odpowiednio sformatowany kod z komentarzami po polsku.
Iterator
Iterator
to interfejs wprowadzony w Java 2 (wersja 1.2), który pozwala na bezpieczne usuwanie elementów podczas iteracji po kolekcji. Posiada metody takie jak next()
, hasNext()
i remove()
.
Enumeration
Enumeration
jest starszym interfejsem, który został wprowadzony w Java 1.0. Umożliwia jedynie przeglądanie elementów kolekcji bez możliwości ich modyfikacji. Zawiera dwie główne metody: nextElement()
i hasMoreElements()
.
Przykład użycia
Zobaczmy, jak oba te interfejsy mogą być wykorzystane do przeglądania elementów kolekcji ArrayList
. Przykład będzie zawierał komentarze bezpośrednio w kodzie, wyjaśniające działanie poszczególnych linii.
import java.util.*;
public class Main {
public static void main(String[] args) {
// Utworzenie nowej ArrayList
List<String> cars = new ArrayList<>();
cars.add("Ford");
cars.add("Toyota");
cars.add("Honda");
// Użycie Iteratora do wyświetlenia i usunięcia elementów
Iterator<String> iterator = cars.iterator();
while (iterator.hasNext()) {
String car = iterator.next(); // Pobranie kolejnego elementu
System.out.println(car); // Wyświetlenie elementu
iterator.remove(); // Usunięcie elementu z kolekcji
}
// Ponowne dodanie elementów do listy
cars.add("Ford");
cars.add("Toyota");
cars.add("Honda");
// Użycie Enumeration do wyświetlenia elementów
Enumeration<String> enumeration = Collections.enumeration(cars);
while (enumeration.hasMoreElements()) {
String car = enumeration.nextElement(); // Pobranie kolejnego elementu
System.out.println(car); // Wyświetlenie elementu
}
}
}
Podsumowanie
Jak widać, Iterator
jest bardziej elastyczny, umożliwiając modyfikację kolekcji podczas iteracji, co jest nie możliwe przy użyciu Enumeration
. Wybór między tymi interfejsami zależy od konkretnych potrzeb aplikacji. Iterator
jest zalecany do nowoczesnych aplikacji Java ze względu na jego dodatkowe możliwości i lepszą integrację z kolekcjami frameworka Java.
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.