Enumeration vs Iterator
Javassa on monia tietorakenteita, jotka toimivat kokoelmina, kuten Vektorit, Hash-taulukot ja luokat, jotka toteuttavat Java Collection Framework -sovelluksen (ts. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap ja LinkedHashSet). Java-objektien yksittäisten elementtien avulla iterointia on olemassa useita tapoja. Java tarjoaa kaksi käyttöliittymää tämän tehtävän helpottamiseksi. Enumeration ja Iterator ovat kaksi java.util-paketissa löydetyistä rajapinnoista, jotka tarjoavat toimintoja sekvenssien tai objektien luetteloimiseksi alkioiden joukolla. Enumerator otettiin käyttöön JDK 1.0: ssa ja Iterator, joka otettiin käyttöön JDK 1.2: ssä, toistaa käytännössä Enumerator-toiminnallisuuden (kokoelmien puitteissa)..
Mikä on luettelo?
Enumeration on Java: n julkinen käyttöliittymä, joka on otettu käyttöön JDK 1.0: ssa, joka tarjoaa kyvyn luetteloida elementtijonojen avulla. Se löytyy paketista java.util. Kun objekti lisää enumeration-käyttöliittymän, se voi generoida sekvenssin elementtejä. Laskentarajapinnalla on kaksi tapaa. Menetelmä hasMoreElements () testaa, sisältääkö tämä luettelo enemmän elementtejä ja nextElement () palauttaa sekvenssin seuraavan elementin (jos on vielä vähintään yksi mennä). Toisin sanoen, soittamalla peräkkäin nextElement (), ohjelmoija voi käyttää sarjan yksittäisiä elementtejä. Esimerkiksi kaikkien vektorin v1 elementtien tulostamiseen Enumerator -sovelluksella voidaan käyttää seuraavaa koodinpätkää.
Listaus e = v1.elementit ();
Kun taas (e.hasMoreLements ())
System.out.println (e.nextElement ());
Enumeratoria voidaan käyttää myös määrittämään tulovirta SequenceInputStream-objekteille.
Mikä on Iterator?
Iterator on Java.util-paketin julkinen käyttöliittymä, joka sallii sen iteroinnin kokoelmaobjektien elementtien avulla, jotka toteuttavat Kokoelmat-kehyksen (kuten ArrayList, LinkedList jne.). Tämä otettiin käyttöön JDK 1.2: ssä ja korvasi Enumeratorin Java-kokoelmien puitteissa. Iteratorilla on kolme menetelmää. Menetelmässä hasNext () testataan, onko kokoelmassa jäljellä olevia elementtejä, ja seuraava () menetelmä palauttaa sarjan seuraavan elementin. Poista () -menetelmää voidaan käyttää nykyisen elementin poistamiseksi alla olevasta kokoelmasta. Esimerkiksi kaikkien vektorin v1 elementtien tulostamiseen Iteratorilla voidaan käyttää seuraavaa koodinpätkää.
Iteraattori i = v1.elementit ();
Kun taas (i.hasNext ())
System.out.println (e.next ());
Mitä eroa on Enumerationin ja Iteratorin välillä??
Vaikka Enumeration ja Iterator ovat kahta java.util-paketissa löydetyistä rajapinnoista, jotka sallivat iteroinnin / luettelon sarjan elementtien kautta, niillä on erot. Itserator, joka otettiin käyttöön Enumerationin jälkeen, korvaa Enumerationin Java-kokoelmien puitteissa. Toisin kuin Enumeration, Iterator on vikasuojattu. Tämä tarkoittaa, että samanaikaiset muutokset (taustalla olevaan kokoelmaan) eivät ole sallittuja, kun Iteratoria käytetään. Tämä on erittäin hyödyllistä monisäikeisissä ympäristöissä, joissa on aina samanaikaisten muutosten riski. Jos tapahtuu samanaikainen muutos, Iterator-objekti heittää ConcurrentModificationException. Iteratorilla on lyhyemmät menetelmänimet verrattuna Enumeratoriin. Lisäksi iteraattorilla on ylimääräinen toiminnallisuus poistaa elementtejä iteraation aikana (mikä ei ole mahdollista Enumeratorilla). Joten jos elementtejä on poistettava kokoelmasta, Iterator on ainoa vaihtoehto, jota voidaan harkita.