Razlika između nabrajanja i iteratora

Razlika između nabrajanja i iteratora
Razlika između nabrajanja i iteratora

Video: Razlika između nabrajanja i iteratora

Video: Razlika između nabrajanja i iteratora
Video: UPRO01 - Modeliranje poslovnih procesa i BPMN 2024, Juli
Anonim

Enumeration vs Iterator

Postoje mnoge strukture podataka koje djeluju kao kolekcije u Javi, kao što su vektori, hash tablice i klase koje implementiraju Java Collections Framework (tj. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap i LinkedHashSet). Postoje brojni načini iteracije kroz pojedinačne elemente objekata u Javi. Java nudi dva sučelja koja olakšavaju ovaj zadatak. Nabrajanje i Iterator su dva interfejsa koja se nalaze u paketu java.util koja pružaju funkcionalnost za nabrajanje kroz sekvence ili objekte sa skupom stavki. Enumerator je uveden u JDK 1.0 i Iterator koji je uveden u JDK 1.2 virtuelno duplira funkcionalnost Enumeratora (u okviru Collections Framework).

Šta je nabrajanje?

Enumeration je javni interfejs u Javi, predstavljen u JDK 1.0, koji pruža mogućnost nabrajanja niza elemenata. Nalazi se u paketu java.util. Kada je sučelje Enumeration implementirano od strane objekta, taj objekt može generirati niz elemenata. Interfejs za nabrajanje ima dvije metode. Metoda hasMoreElements() će testirati da li ovo nabrajanje sadrži više elemenata, a nextElement() vraća sljedeći element u nizu (ako postoji još barem jedan). Drugim riječima, uzastopnim pozivanjem nextElement() programer može pristupiti pojedinačnim elementima u nizu. Na primjer, za ispis svih elemenata u Vector v1 koristeći Enumerator, može se koristiti sljedeći isječak koda.

Enumeracija e=v1.elements();

Dok(e.hasMoreLements()){

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

}

Enumerator se također može koristiti za definiranje toka unosa u objekte SequenceInputStream.

Šta je Iterator?

Iterator je javni interfejs u paketu Java.util, koji omogućava ponavljanje kroz elemente objekata kolekcija koji implementiraju okvir kolekcija (kao što su ArrayList, LinkedList, itd.). Ovo je uvedeno u JDK 1.2 i zamenilo je Enumerator u okviru Java Collections Framework-a. Iterator ima tri metode. Metoda hasNext() testira da li ima preostalih elemenata u kolekciji, a metoda next() vraća sljedeći element u nizu. Metoda remove() može se koristiti za uklanjanje trenutnog elementa iz osnovne kolekcije. Na primjer, za ispis svih elemenata u Vector v1 koristeći Iterator, može se koristiti sljedeći isječak koda.

Iterator i=v1.elements();

Dok(i.hasNext()){

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

}

Koja je razlika između Enumeracije i Iteratora?

Iako su Enumeration i Iterator dva interfejsa koja se nalaze u paketu java.util, koja dozvoljavaju ponavljanje/nabrajanje kroz elemente niza, oni imaju svoje razlike. Zapravo, Iterator, koji je uveden nakon Enumeration, zamjenjuje Enumeration u okviru Java Collections. Za razliku od Enumeration, Iterator je siguran. To znači da istovremene modifikacije (osnovne kolekcije) nisu dozvoljene kada se koristi Iterator. Ovo je vrlo korisno u okruženjima s više niti gdje uvijek postoji rizik od istovremenih modifikacija. U slučaju istovremene modifikacije, objekat Iterator će baciti ConcurrentModificationException. Iterator ima kraća imena metoda u odnosu na Enumerator. Nadalje, iterator ima dodatnu funkcionalnost brisanja elemenata tokom iteracije (što nije moguće korištenjem Enumeratora). Dakle, ako postoji potreba za uklanjanjem elemenata iz kolekcije, Iterator je jedina opcija koja se može uzeti u obzir.

Preporučuje se: