Razlika između enumeracije i iteratora

Razlika između enumeracije i iteratora
Razlika između enumeracije i iteratora

Video: Razlika između enumeracije i iteratora

Video: Razlika između enumeracije i iteratora
Video: Metafora i metonimija 2024, Srpanj
Anonim

Enumeracija vs Iterator

Postoje mnoge strukture podataka koje djeluju kao zbirke 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 sučelja koja se nalaze u paketu java.util koja pružaju funkcionalnost za nabrajanje nizova ili objekata sa skupom stavki. Enumerator je uveden u JDK 1.0 i Iterator koji je uveden u JDK 1.2 praktički duplira funkcionalnost Enumeratora (unutar Collections Framework).

Što je nabrajanje?

Enumeracija je javno sučelje u Javi, uvedeno u JDK 1.0, koje pruža mogućnost nabrajanja kroz nizove elemenata. Nalazi se pod paketom java.util. Kada sučelje enumeration implementira objekt, taj objekt može generirati niz elemenata. Sučelje nabrajanja ima dvije metode. Metoda hasMoreElements() testirat će sadrži li ovo nabrajanje više elemenata, a nextElement() vraća sljedeći element u nizu (ako postoji barem još 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 pomoću Enumeratora, može se koristiti sljedeći isječak koda.

Enumeracija e=v1.elements();

While(e.hasMoreLements()){

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

}

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

Što je Iterator?

Iterator je javno sučelje u paketu Java.util, koje omogućuje iteraciju kroz elemente objekata kolekcija koje implementiraju okvir kolekcija (kao što su ArrayList, LinkedList, itd.). Ovo je uvedeno u JDK 1.2 i zamijenilo je Enumerator unutar Java Collections Frameworka. Iterator ima tri metode. Metoda hasNext() testira ima li 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 temeljne kolekcije. Na primjer, za ispis svih elemenata u Vektoru v1 pomoću Iteratora, može se koristiti sljedeći isječak koda.

Iterator i=v1.elements();

While(i.hasNext()){

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

}

Koja je razlika između enumeracije i iteratora?

Iako su Enumeration i Iterator dva sučelja koja se nalaze u paketu java.util, koja dopuštaju ponavljanje/nabrajanje kroz elemente niza, oni imaju svoje razlike. Zapravo, Iterator, koji je uveden nakon Enumerationa, zamjenjuje Enumeration unutar okvira Java Collections. Za razliku od Enumerationa, Iterator je siguran od grešaka. To znači da istodobne izmjene (u temeljnoj zbirci) nisu dopuštene kada se koristi Iterator. Ovo je vrlo korisno u okruženjima s više niti gdje uvijek postoji rizik od istodobnih izmjena. U slučaju istodobne izmjene, objekt Iterator će izbaciti ConcurrentModificationException. Iterator ima kraća imena metoda u usporedbi s Enumeratorom. Nadalje, iterator ima dodatnu funkcionalnost brisanja elemenata tijekom 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čeni: