Ero Laskennan Ja Iteraattorin Välillä

Ero Laskennan Ja Iteraattorin Välillä
Ero Laskennan Ja Iteraattorin Välillä

Video: Ero Laskennan Ja Iteraattorin Välillä

Video: Ero Laskennan Ja Iteraattorin Välillä
Video: Nurmeksen kaupungin metsät hiilitaselaskelmien esimerkkinä 2024, Marraskuu
Anonim

Listaus vs. iteraattori

Java-kokoelmina toimii monia tietorakenteita, kuten Vectors, Hash-taulukot ja luokat, jotka toteuttavat Java Collections Frameworkin (esim. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap ja LinkedHashSet). On olemassa useita tapoja toistaa Java-kohteiden yksittäisten elementtien läpi. Java tarjoaa kaksi käyttöliittymää tämän tehtävän helpottamiseksi. Listaus ja Iterator ovat kaksi java.util-paketissa olevia rajapintoja, jotka tarjoavat toiminnallisuuden luetella sekvenssien tai objektien joukossa kohteita. Enumerator esiteltiin JDK 1.0: ssa ja Iterator, joka otettiin käyttöön JDK 1.2: ssa, käytännössä kopioi Enumeratorin toiminnallisuutta (kokoelmakehyksen sisällä).

Mikä on luettelointi?

Enumeration on JDK 1.0: ssa esitelty julkinen käyttöliittymä Java-sovelluksessa, joka tarjoaa mahdollisuuden luetella elementtisekvenssien kautta. Se löytyy java.util-paketista. Kun objekti toteuttaa luettelointirajapinnan, kyseinen objekti voi luoda sarjan elementtejä. Luettelorajapinnalla on kaksi tapaa. Menetelmä hasMoreElements () testaa, sisältääkö tämä luettelo enemmän elementtejä ja nextElement () palauttaa sarjan seuraavan elementin (jos vielä on vähintään yksi jäljellä). Toisin sanoen, kutsumalla nextElement () peräkkäin, ohjelmoija voi käyttää sarjan yksittäisiä elementtejä. Esimerkiksi kaikkien vektori v1 -elementtien tulostamiseen Enumeratorilla voidaan käyttää seuraavaa koodinpätkää.

Luettelo e = v1.elements ();

Vaikka (e.hasMoreLements ()) {

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

}

Laskuria voidaan käyttää myös määrittämään syötevirta SequenceInputStream-objekteille.

Mikä on iteraattori?

Iterator on Java.util-paketin julkinen käyttöliittymä, joka sallii iteroinnin kokoelmakehyksen toteuttavien kokoelmaobjektien elementtien (kuten ArrayList, LinkedList jne.) Kautta. Tämä otettiin käyttöön JDK 1.2: ssa ja korvasi Enumeratorin Java Collections Framework -sovelluksessa. Iteratorilla on kolme menetelmää. Menetelmä hasNext () testaa, onko kokoelmassa jäljellä elementtejä, ja seuraava () -menetelmä palauttaa sarjan seuraavan elementin. Remove () -menetelmää voidaan käyttää poistamaan nykyinen elementti taustalla olevasta kokoelmasta. Esimerkiksi kaikkien vektori v1 -elementtien tulostamiseksi Iteratorilla voidaan käyttää seuraavaa koodinpätkää.

Iteraattori i = v1.elementit ();

Vaikka (i.hasNext ()) {

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

}

Mitä eroa on laskennalla ja iteraattorilla?

Vaikka Enumeration ja Iterator ovat kaksi java.util-paketissa olevista rajapinnoista, jotka mahdollistavat iteroinnin / laskemisen sarjan elementtien kautta, niillä on eroja. Itse asiassa Iterator, joka otettiin käyttöön luettelon jälkeen, korvaa luettelon Java-kokoelmien puitteissa. Toisin kuin luettelo, Iterator on vikaturvallinen. Tämä tarkoittaa, että samanaikaisia muutoksia (taustalla olevaan kokoelmaan) ei sallita, kun Iteratoria käytetään. Tämä on erittäin hyödyllistä monisäikeisissä ympäristöissä, joissa samanaikaisten muutosten riski on aina olemassa. Jos kyseessä on samanaikainen muunnos, Iterator-objekti heittää ConcurrentModificationExceptionin. Iteratorilla on lyhyempi menetelmän nimi kuin Enumeratorilla. Lisäksi,iteraattorilla on lisätoiminto elementtien poistamiseen iteroinnin aikana (mikä ei ole mahdollista laskurin avulla). Joten jos on tarpeen poistaa elementtejä kokoelmasta, Iterator on ainoa vaihtoehto, jota voidaan harkita.

Suositeltava: