Diferența dintre enumerare și iterator

Enumerarea vs. Iterator

Există multe structuri de date care acționează ca colecții în Java, cum ar fi Vectors, Hash tables și clase care implementează Java Collections Framework (adică HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap și LinkedHashSet). Există numeroase moduri de a itera prin elementele individuale ale obiectelor din Java. Java oferă două interfețe pentru a face această sarcină mai ușoară. Enumerarea și Iteratorul sunt două dintre interfețele găsite în pachetul java.util care oferă funcționalitate pentru a enumera prin secvențe sau obiecte cu un set de elemente. Enumerator a fost introdus în JDK 1.0 și Iterator care a fost introdus în JDK 1.2 practic duplică funcționalitatea Enumerator (în cadrul Colecției).

Ce este enumerarea?

Enumerarea este o interfață publică în Java, introdusă în JDK 1.0, care oferă abilitatea de a enumera prin secvențe de elemente. Acesta este găsit în pachetul java.util. Când interfața Enumerare este implementată de un obiect, obiectul respectiv poate genera o secvență de elemente. Interfața de enumerare are două metode. Metoda hasMoreElements () va testa dacă această enumerare conține mai multe elemente iar nextElement () returnează următorul element din secvență (dacă există cel puțin încă unul). Cu alte cuvinte, numind nextElement () succesiv, programatorul poate accesa elementele individuale din serie. De exemplu, pentru a imprima toate elementele din Vector v1 folosind Enumerator, se poate utiliza următorul fragment de cod.

Enumerarea e = v1.elemente ();

În timp ce (e.hasMoreLements ())

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

Enumerator poate fi, de asemenea, utilizat pentru a defini fluxul de intrare pentru obiectele SequenceInputStream.

Ce este Iterator?

Iterator este o interfață publică în pachetul Java.util, care permite iterarea prin elemente ale obiectelor colecțiilor care implementează cadrul colecțiilor (cum ar fi ArrayList, LinkedList, etc.). Acesta a fost introdus în JDK 1.2 și a înlocuit Enumeratorul în cadrul Java Collections Framework. Iterator are trei metode. Metoda areNext () testează dacă există elemente rămase în colecție, iar metoda următoare () returnează următorul element din serie. Metoda remove () poate fi utilizată pentru a elimina elementul curent din colecția de bază. De exemplu, pentru a imprima toate elementele din Vector v1 utilizând Iterator, se poate utiliza următorul fragment de cod.

Iteratorul i = v1.elemente ();

In timp ce (i.hasNext ())

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

Care este diferența dintre Enumerare și Iterator?

Deși Enumerarea și Iteratorul sunt două dintre interfețele găsite în pachetul java.util, care permit iterarea / enumerarea prin elemente ale unei serii, ele au diferențele. De fapt, Iterator, care a fost introdus după enumerare, înlocuiește enumerarea în cadrul colecțiilor Java. Spre deosebire de enumerare, Iterator este sigur. Aceasta înseamnă că nu sunt permise modificări simultane (la colecția de bază) atunci când se utilizează Iterator. Acest lucru este foarte util în medii multi-threaded în care există întotdeauna un risc de modificări concurente. În cazul unei modificări concomitente, obiectul Iterator va arunca o ExcursionConcurrentModificationException. Iteratorul are nume de metode mai scurte comparativ cu Enumerator. În plus, iteratorul are funcționalitatea suplimentară de ștergere a elementelor în timpul iterației (ceea ce nu este posibil prin utilizarea Enumerator). Deci, dacă este nevoie să eliminați elemente din colecție, Iteratorul este singura opțiune care poate fi luată în considerare.