Atšķirība Starp Uzskaitījumu Un Atkārtotāju

Atšķirība Starp Uzskaitījumu Un Atkārtotāju
Atšķirība Starp Uzskaitījumu Un Atkārtotāju

Video: Atšķirība Starp Uzskaitījumu Un Atkārtotāju

Video: Atšķirība Starp Uzskaitījumu Un Atkārtotāju
Video: 👨Dzīvs/Nedzīvs😲 2 Kā kļūt par Dzīvu un atdzīvināt citus.Atšķirībā no Cilvēka vārdā 2024, Decembris
Anonim

Uzskaitījums vs Iterators

Ir daudz datu struktūru, kas darbojas kā Java kolekcijas, piemēram, Vectors, Hash tabulas un klases, kas ievieš Java Collections Framework (ti, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap un LinkedHashSet). Ir daudz veidu, kā atkārtot, izmantojot Java objektu atsevišķos elementus. Java nodrošina divas saskarnes, lai atvieglotu šo uzdevumu. Uzskaitījums un Iterator ir divas saskarnes, kas atrodamas paketā java.util, kas nodrošina funkcionalitāti, lai uzskaitītu caur secībām vai objektiem ar objektu kopu. Enumerator tika ieviests JDK 1.0, bet Iterator, kas tika ieviests JDK 1.2, faktiski dublē Enumerator funkcionalitāti (kolekciju ietvarā).

Kas ir uzskaitījums?

Uzskaitīšana ir publiska saskarne Java, kas ieviesta ar JDK 1.0 un nodrošina iespēju uzskaitīt, izmantojot elementu secības. Tas ir atrodams zem java.util paketes. Kad uzskaites saskarni ievieš objekts, šis objekts var ģenerēt elementu secību. Uzskaitīšanas saskarnē ir divas metodes. Metode hasMoreElements () pārbaudīs, vai šajā uzskaitījumā ir vairāk elementu, un nextElement () atgriež nākamo elementu secībā (ja vēl ir jāiet vēl vismaz viens). Citiem vārdiem sakot, pēc kārtas izsaucot nextElement (), programmētājs var piekļūt atsevišķiem sērijas elementiem. Piemēram, lai drukātu visus vektora v1 elementus, izmantojot Enumerator, var izmantot šādu koda fragmentu.

Uzskaitījums e = v1.elements ();

Kamēr (e.hasMoreLements ()) {

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

}

Skaitītāju var izmantot arī, lai definētu ievades straumi objektiem SequenceInputStream.

Kas ir Iterator?

Iterator ir publiska saskarne Java.util pakotnē, kas ļauj atkārtot, izmantojot kolekciju objektu elementus, kas ievieš kolekciju sistēmu (piemēram, ArrayList, LinkedList utt.). Tas tika ieviests JDK 1.2 un Java kolekciju ietvarā aizstāja skaitītāju. Iteratoram ir trīs metodes. Metode hasNext () pārbauda, vai kolekcijā ir atlikušie elementi, un nākamā () metode atgriež sērijas nākamo elementu. Metodi Remove () var izmantot, lai noņemtu pašreizējo elementu no pamatā esošās kolekcijas. Piemēram, lai izdrukātu visus Vector v1 elementus, izmantojot Iterator, var izmantot šādu koda fragmentu.

Iterators i = v1.elementi ();

Kamēr (i.hasNext ()) {

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

}

Kāda ir atšķirība starp uzskaitījumu un iteratoru?

Lai gan uzskaitījums un atkārtotājs ir divas no java.util pakotnē atrodamajām saskarnēm, kas ļauj atkārtot / uzskaitīt, izmantojot sērijas elementus, tām ir savas atšķirības. Faktiski Iterator, kas tika ieviests pēc uzskaitījuma, Java kolekciju sistēmā aizstāj uzskaitījumu. Atšķirībā no uzskaites, Iterator ir drošs pret kļūmēm. Tas nozīmē, ka vienlaicīgas modifikācijas (pamatā esošajā kolekcijā) nav atļautas, ja tiek izmantots Iterator. Tas ir ļoti noderīgi vidē ar vairākiem pavedieniem, kur vienmēr pastāv vienlaicīgu modifikāciju risks. Vienlaicīgas modifikācijas gadījumā objekts Iterator izmetīs ConcurrentModificationException. Iteratoram ir īsāki metožu nosaukumi salīdzinājumā ar Enumerator. Turklātiteratoram ir papildu funkcionalitāte, izdzēšot elementus iterācijas laikā (kas nav iespējams, izmantojot Enumerator). Tātad, ja ir nepieciešams noņemt elementus no kolekcijas, Iterator ir vienīgā iespēja, kuru var apsvērt.

Ieteicams: