Enumerare vs Iterator
Există multe structuri de date care acționează ca colecții în Java, cum ar fi vectori, tabele Hash ș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 ușura această sarcină. Enumerarea și Iteratorul sunt două dintre interfețele găsite în pachetul java.util care oferă funcționalități de enumerare prin secvențe sau obiecte cu un set de articole. Enumerator a fost introdus în JDK 1.0 și Iterator care a fost introdus în JDK 1.2 dublează practic funcționalitatea Enumeratorului (în cadrul colecțiilor).
Ce este Enumerarea?
Enumerarea este o interfață publică în Java, introdusă în JDK 1.0, care oferă posibilitatea de a enumera prin secvențe de elemente. Se găsește sub pachetul java.util. Când interfața Enumerare este implementată de un obiect, acel obiect poate genera o succesiune de elemente. Interfața de enumerare are două metode. Metoda hasMoreElements () va testa dacă această enumerare conține mai multe elemente și nextElement () returnează următorul element din secvență (dacă mai sunt cel puțin încă unul de parcurs). Cu alte cuvinte, apelând succesiv nextElement (), programatorul poate accesa elementele individuale din serie. De exemplu, pentru a imprima toate elementele din Vector v1 folosind Enumerator, poate fi utilizat următorul fragment de cod.
Enumerare e = v1.elements ();
While (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ții (cum ar fi ArrayList, LinkedList etc.). Aceasta a fost introdusă în JDK 1.2 și a înlocuit Enumeratorul în cadrul Java Collections Framework. Iterator are trei metode. Metoda hasNext () testează dacă mai sunt elemente rămase în colecție și metoda next () returnează următorul element din serie. Metoda remove () poate fi utilizată pentru a elimina elementul curent din colecția subiacentă. De exemplu, pentru a imprima toate elementele din Vector v1 folosind Iterator, poate fi utilizat următorul fragment de cod.
Iterator i = v1.elements ();
While (i.hasNext ()) {
System.out.println (e.next ());
}
Care este diferența dintre Enumerare și Iterator?
Deși Enumerare și Iterator sunt două dintre interfețele găsite în pachetul java.util, care permit iterarea / enumerarea prin elemente ale unei serii, ele au diferențele lor. De fapt, Iterator, care a fost introdus după Enumerare, înlocuiește Enumerarea în cadrul Java Collections. Spre deosebire de Enumerare, Iterator este sigur. Aceasta înseamnă că modificările concurente (la colecția subiacentă) nu sunt permise atunci când este utilizat Iterator. Acest lucru este foarte util în mediile multi-thread în care există întotdeauna riscul modificărilor simultane. În cazul unei modificări concurente, obiectul Iterator va arunca o ConcurențăModificareExcepție. Iterator are nume mai scurte de metode în comparație cu Enumerator. În plus,iteratorul are funcționalitatea suplimentară de a șterge elemente în timpul iterației (ceea ce nu este posibil folosind Enumerator). Deci, dacă este nevoie să eliminați elemente din colecție, Iterator este singura opțiune care poate fi luată în considerare.