Differenza tra Iterator e Enumeration Interface in Java

Autore: Laura McKinney
Data Della Creazione: 2 Aprile 2021
Data Di Aggiornamento: 1 Maggio 2024
Anonim
What is difference between Enumeration and Iterator interface ?||Collection Java Interview Question
Video: What is difference between Enumeration and Iterator interface ?||Collection Java Interview Question

Contenuto


I tre cursori utilizzati per accedere agli elementi da qualsiasi raccolta uno alla volta lo sono Enumerazione, Iteratore e ListIterator. Tuttavia, Iterator ed Enumerator sono pensati per eseguire lo stesso lavoro. Tuttavia, sono distinti l'uno dall'altro nel senso che l'Enumerazione ha accesso in sola lettura agli elementi della raccolta. Dall'altro lato, Iterator può leggere e rimuovere gli elementi dalla raccolta. La differenza importante tra Iteratore ed Enumerazione è che Enumerazione non può essere applicato alle classi di raccolta, è applicabile solo alle classi legacy. D'altra parte, il Iterator è applicabile alle classi di raccolta quindi, viene indicato come cursore universale. Impariamo qualche differenza in più tra Iteratore ed Enumerazione con l'aiuto della tabella di confronto mostrata di seguito.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoIterator Enumerazione
Di baseIterator è un cursore universale in quanto è applicabile per tutte le classi di raccolta.L'enumerazione non è un cursore universale poiché si applica solo alle classi legacy.
AccessoUsando Iterator puoi leggere e rimuovere gli elementi nella raccolta.Usando l'Enumerazione puoi solo leggere gli elementi nella raccolta.
metodihasnext pubblico booleano ();
oggetti pubblici next ();
void pubblico remove ();
hasMoreElements () pubblico booleano;
oggetto pubblico nextElement ();
LimitazioneIterator è un cursore di accesso in avanti unidirezionale.
Iterator non può sostituire alcun elemento nella raccolta.
Iterator non può aggiungere alcun nuovo elemento nella raccolta.
L'enumerazione è un cursore di accesso diretto unidirezionale.
L'enumerazione supporta solo le classi legacy.
L'enumerazione ha accesso in sola lettura agli elementi in una raccolta.
SuperarePer superare i limiti di Iterator devi optare per ListIterator.Per superare i limiti dell'enumerazione è necessario optare per Iterator.


Definizione di Iterator Interface

Iterator è un'interfaccia nel framework di raccolta. Poiché Iterator è applicabile a tutte le classi di raccolta, viene indicato come cursore universale. È il cursore utilizzato per accedere uno alla volta agli elementi della raccolta. Utilizzando Iterator, è possibile recuperare gli elementi dalla raccolta e, se lo si desidera, è possibile rimuovere anche gli elementi dalla raccolta. L'oggetto di Iterator può essere creato come indicato di seguito.

Iterator itr = Collc.iterator ();

La variabile itr è un oggetto di Iterator. Collc è un oggetto di raccolta che deve essere ciclicato o ripetuto utilizzando l'oggetto (itr) di Iterator. Il iterator () è il metodo utilizzato per creare un oggetto iteratore. Esistono tre metodi nell'Iteratore come mostrato di seguito.

hasnext pubblico booleano (); public Object next (); void pubblico remove ();

Il primo metodo hasNext () controlla se la raccolta contiene elementi o meno. Se la raccolta ha gli elementi, restituirà true, altrimenti restituirà false. Il secondo metodo Il prossimo() viene utilizzato per recuperare l'elemento successivo nella raccolta. Il terzo metodo rimuovere() viene utilizzato per eliminare gli elementi dalla raccolta.


Iteratore può viaggiare in una raccolta solo nella direzione in avanti e non può tornare indietro durante il viaggio. Iteratore può rimuovere l'elemento dalla raccolta ma non ha la possibilità di sostituire alcun elemento esistente con un nuovo elemento né può aggiungere alcun nuovo elemento nella raccolta. Per superare queste limitazioni, puoi scegliere l'interfaccia ListIterator.

Definizione di Enumeration Interface

Enumerazione è l'interfaccia applicabile a eredità classi e non può essere applicato a nessuna classe di raccolta. Quindi, non è un cursore universale. L'enumerazione recupera l'elemento (oggetto) dalla raccolta uno alla volta. L'oggetto di enumerazione ha accesso in sola lettura agli elementi della raccolta. L'oggetto di enumerazione non può modificare alcun elemento dalla raccolta. Vediamo come creare un oggetto di enumerazione, diamo un'occhiata.

Enumerazione er = Vect.elements ();

La variabile er è un oggetto di enumerazione. Il Vect è l'oggetto della classe vettoriale che deve essere attraversato dall'oggetto (er) dell'Enumerazione. Il metodo elemento() viene utilizzato per creare un oggetto di enumerazione. Esistono solo due metodi nell'interfaccia di enumerazione come mostrato di seguito.

hasMoreElements () pubblico booleano; public nextElement ();

Il primo metodo hasMoreElements () viene utilizzato per verificare lo stato della raccolta se contiene gli elementi o se è vuoto. Se la raccolta ha gli elementi, il metodo hasMoreElements () restituisce true, altrimenti restituisce false. Il secondo metodo nextElement () viene utilizzato per recuperare gli elementi dalla raccolta uno alla volta. Una volta completato l'attraversamento, viene lanciato il metodo nextElement () NoSuchElementException. L'oggetto Enumeration viaggia solo in avanti. Non può aggiungere o rimuovere o sostituire alcun elemento nella raccolta. Per superare questi limiti dell'enumerazione, è necessario optare per Iterator.

  1. La differenza principale tra Iteratore ed Enumerazione è che Iterator è un cursore universale, che può essere utilizzato per iterare qualsiasi oggetto di raccolta. D'altra parte, l'Enumerazione viene utilizzata solo per attraversare l'oggetto della classe legacy.
  2. L'oggetto di enumerazione ha accesso di sola lettura agli elementi nella raccolta. Tuttavia, l'oggetto di Iterator può leggere e rimuovere gli elementi dalla raccolta.
  3. Esistono due metodi di iteratore uno per verificare lo stato della raccolta e uno per recuperare gli elementi dalla raccolta. Oltre ai metodi di enumerazione, Iterator ha un altro metodo per rimuovere gli elementi dalla raccolta.
  4. Limitazioni dell'enumerazione sono il cursore in avanti unidirezionale, ha accesso in sola lettura e può essere applicato alle classi di raccolta. D'altra parte, Iterator non può sostituire o aggiungere alcun nuovo elemento nella raccolta e come Enumeration è anche il suo cursore unidirezionale in avanti.
  5. Le limitazioni dell'enumerazione vengono risolte da Iterator e le limitazioni di Iterator vengono risolte da ListIterator.

Conclusione:

Al giorno d'oggi, Iterator e il cursore ListItertaor vengono utilizzati in quanto sono il cursore universale e sono molto efficienti dell'enumerazione.