Differenza tra enumerazione e Iterator

Enumerazione vs Iteratore

Esistono molte strutture di dati che fungono da raccolte in Java come vettori, tabelle hash e classi che implementano Java Collections Framework (cioè HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap e LinkedHashSet). Esistono numerosi modi per scorrere i singoli elementi degli oggetti in Java. Java fornisce due interfacce per semplificare questo compito. Enumeration e Iterator sono due delle interfacce presenti nel pacchetto java.util che forniscono funzionalità per enumerare attraverso sequenze o oggetti con un insieme di elementi. L'enumeratore è stato introdotto in JDK 1.0 e Iterator, che è stato introdotto in JDK 1.2, praticamente duplica la funzionalità dell'Enumerator (all'interno di Collections Framework).

Cos'è l'enumerazione?

L'enumerazione è un'interfaccia pubblica in Java, introdotta in JDK 1.0, che offre la possibilità di enumerare attraverso sequenze di elementi. Si trova sotto il pacchetto java.util. Quando l'interfaccia Enumerazione è implementata da un oggetto, quell'oggetto può generare una sequenza di elementi. L'interfaccia di enumerazione ha due metodi. Il metodo hasMoreElements () verificherà se questa enumerazione contiene più elementi e nextElement () restituisce l'elemento successivo nella sequenza (se ce n'è almeno uno in più). In altre parole, chiamando nextElement () in successione, il programmatore può accedere ai singoli elementi della serie. Ad esempio, per stampare tutti gli elementi in Vector v1 utilizzando Enumerator, è possibile utilizzare il seguente frammento di codice.

Enumerazione e = v1.elements ();

While (e.hasMoreLements ())

System.out.println (e.nextElement ());

Enumeratore può anche essere utilizzato per definire il flusso di input per gli oggetti SequenceInputStream.

Cos'è Iterator?

Iterator è un'interfaccia pubblica nel pacchetto Java.util, che consente di scorrere gli elementi degli oggetti delle raccolte che implementano il framework Collections (come ArrayList, LinkedList, ecc.). Questo è stato introdotto in JDK 1.2 e sostituito l'Enumeratore all'interno di Java Collections Framework. Iterator ha tre metodi. Il metodo hasNext () verifica se ci sono elementi rimanenti nella collezione e il metodo next () restituisce l'elemento successivo nella serie. Il metodo remove () può essere usato per rimuovere l'elemento corrente dalla collezione sottostante. Ad esempio, per stampare tutti gli elementi di Vector v1 utilizzando Iterator, è possibile utilizzare il seguente frammento di codice.

Iterator i = v1.elements ();

Mentre (i.hasNext ())

System.out.println (e.next ());

Qual è la differenza tra Enumeration e Iterator?

Sebbene Enumeration e Iterator siano due delle interfacce presenti nel pacchetto java.util, che consentono di iterare / enumerare tramite elementi di una serie, hanno le loro differenze. In realtà, Iterator, che è stato introdotto dopo Enumerazione, sostituisce l'Enumerazione all'interno del framework Java Collections. A differenza di Enumeration, Iterator è fail-safe. Ciò significa che le modifiche simultanee (alla raccolta sottostante) non sono consentite quando si utilizza Iterator. Questo è molto utile in ambienti multi-thread in cui c'è sempre il rischio di modifiche concorrenti. Nel caso di una modifica simultanea, l'oggetto Iterator genererà una ConcurrentModificationException. Iterator ha nomi di metodo più brevi rispetto a Enumerator. Inoltre, iteratore ha la funzionalità aggiuntiva di eliminare elementi durante l'iterazione (che non è possibile usando Enumerator). Quindi, se è necessario rimuovere elementi dalla raccolta, Iterator è l'unica opzione che può essere considerata.