Differenza tra enumerazione e Iterator

Anonim

Enumerazione vs Iterator

Esistono molte strutture di dati che agiscono come collezioni in Java quali i vettori, le tabelle e le classi Hash che implementano Java Framework (HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap e LinkedHashSet). Esistono numerosi modi per l'iterazione attraverso i singoli elementi degli oggetti in Java. Java fornisce due interfacce per rendere più facile questo compito. Enumerazione e Iteratore sono due delle interfacce presenti nella 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 duplica virtualmente le funzionalità dell'Enumatore (all'interno del framework Collections).

Che cos'è l'enumerazione?

L'enumerazione è un'interfaccia pubblica in Java, introdotta in JDK 1. 0, che fornisce la possibilità di enumerare attraverso sequenze di elementi. Si trova sotto java. util package. Quando l'interfaccia di enumerazione viene implementata da un oggetto, tale oggetto può generare una sequenza di elementi. L'interfaccia di enumerazione ha due metodi. Il metodo hasMoreElements () testerà se questa enumerazione contiene più elementi e il nextElement () restituisce l'elemento successivo della sequenza (se c'è almeno un altro da percorrere). In altre parole, chiamando successivamente () successivamente, 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 snippet di codice.

Enumerazione e = v1. elementi();

Mentre (e. HasMoreLements ()) {

Sistema. su. println (e prossimo ();

}

L'enumeratore può anche essere utilizzato per definire il flusso di input degli oggetti SequenceInputStream.

Che cosa è l'Iterator?

Iterator è un'interfaccia pubblica in Java. util che consente di iterare attraverso gli elementi degli oggetti di raccolta che implementano il framework Collections (ad esempio ArrayList, LinkedList, ecc.). Questo è stato introdotto in JDK 1. 2 e ha sostituito l'Enumeratore all'interno del Framework Java Collections. Iterator ha tre metodi. Il metodo hasNext () esegue test se ci sono elementi restanti nel metodo di raccolta e il metodo next () restituisce l'elemento successivo della serie. Il metodo remove () può essere utilizzato per rimuovere l'elemento corrente dalla raccolta sottostante. Ad esempio, per stampare tutti gli elementi in Vector v1 utilizzando Iterator, è possibile utilizzare il seguente frammento di codice.

Iteratore i = v1. elementi();

Mentre (i. HasNext ()) {

Sistema. su. println (successivo ());

}

Qual è la differenza tra Enumerazione e Iterator?

Anche se Enumerazione e Iteratore sono due delle interfacce trovate nella java.util che permettono iterazione / enumerazione attraverso elementi di una serie, hanno le loro differenze. In realtà, l'Iterator, introdotto dopo Enumerazione, sostituisce l'Enumerazione all'interno del framework Java Collections. A differenza di Enumerazione, l'Iterator è fail-safe. Ciò significa che le modifiche concorrenti (alla raccolta sottostante) non sono consentite quando viene utilizzato l'Iterator. Questo è molto utile in ambienti multifili dove esiste sempre un rischio di modifiche concorrenti. In caso di modifica concorrente, l'oggetto Iterator lancerà ConcurrentModificationException. Iterator ha nomi di metodo più brevi rispetto a Enumeratore. Inoltre, l'iteratore ha la funzionalità aggiuntiva di eliminare elementi durante l'iterazione (che non è possibile utilizzando Enumeratore). Quindi, se c'è bisogno di rimuovere elementi dalla raccolta, l'Iterator è l'unica opzione che può essere considerata.