Atšķirība starp uzskaitīšanu un atkārtošanu

Uzskaite vs Iterators

Ir daudzas datu struktūras, kas Java darbojas kā kolekcijas, piemēram, Vektori, Hash tabulas un klases, kas ievieš Java kolekciju sistēmu (t.i., HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap un LinkedHashSet). Ir daudz veidu, kā atkārtot, izmantojot atsevišķus Java objektu objektus. Java nodrošina divas saskarnes, lai atvieglotu šo uzdevumu. Uzskaitīšana un atkārtotājs ir divas saskarnes, kas atrodamas pakotnē java.util un kuras nodrošina funkcionalitāti, lai uzskaitītu sekvences vai objektus ar vienumu kopu. Enumerator tika ieviests JDK 1.0, un Iterator, kas tika ieviests JDK 1.2, faktiski dublē Enumerator funkcionalitāti (kolekciju ietvarā).

Kas ir uzskaitījums?

Uzskaitīšana ir Java publiska saskarne, kas ieviesta JDK 1.0, kas nodrošina iespēju uzskaitīt, izmantojot elementu secības. Tas ir atrodams pakotnē java.util. Kad objekts ievieš skaitīšanas saskarni, tas var radīt elementu secību. Uzskaitīšanas saskarnei 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 ir vēl vismaz viens iet). Citiem vārdiem sakot, pēc kārtas zvanot uz nextElement (), programmētājs var piekļūt atsevišķiem sērijas elementiem. Piemēram, lai izdrukātu visus Vector v1 elementus, izmantojot Enumerator, var izmantot šo koda fragmentu.

Uzskaite e = v1.elementi ();

Kamēr (e.hasMoreLements ())

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

Enumerator var izmantot arī, lai definētu ieejas straumi objektos SequenceInputStream.

Kas ir Iterators?

Iterators ir Java.util pakotnes publiska saskarne, kas ļauj atkārtot kolekcijas objektu elementus, kas ievieš kolekciju sistēmu (piemēram, ArrayList, LinkedList utt.). Tas tika ieviests JDK 1.2 un aizstāja Enumerator Java kolekciju ietvarā. Iteratoram ir trīs metodes. Metode hasNext () pārbauda, ​​vai kolekcijā ir atlikušie elementi, un nākamā () metode atgriež nākamo sērijas elementu. Metodi noņemt () var izmantot, lai pašreizējo elementu noņemtu no pamatā esošās kolekcijas. Piemēram, lai izdrukātu visus Vector v1 elementus, izmantojot Iterator, var izmantot šo 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 atkārtotāju??

Lai arī skaitīšana un atkārtotājs ir divas saskarnes, kas atrodamas pakotnē java.util un kuras ļauj atkārtot / uzskaitīt, izmantojot virknes elementus, tām ir atšķirības. Faktiski Iterator, kas tika ieviests pēc uzskaitīšanas, Java kolekciju ietvaros aizstāj skaitīšanu. Atšķirībā no uzskaitījuma, Iterator ir drošs par kļūmēm. Tas nozīmē, ka vienlaicīgas modifikācijas (pamata 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 ConcurrentModificationException. Iteratoram ir īsāki metožu nosaukumi, salīdzinot ar Enumerator. Turklāt iteratoram ir papildu funkcionalitāte, izdzēšot elementus iterācijas laikā (kas nav iespējams, izmantojot Enumerator). Tātad, ja ir jānoņem elementi no kolekcijas, Iterator ir vienīgā iespēja, ko var apsvērt.