Atšķirība starp Iterator un skaitīšanas interfeisu Java

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 3 Jūlijs 2024
Anonim
#11.1 Collection and Generics | Iterator Interface
Video: #11.1 Collection and Generics | Iterator Interface

Saturs


Trīs kursori, kas tiek izmantoti, lai pa vienam piekļūtu jebkuras kolekcijas elementiem, ir Uzskaitīšana, atkārtošana un saraksta sastādīšana. Iterators un skaitītājs tomēr ir paredzēti viena un tā paša darba veikšanai. Tomēr tie atšķiras viens no otra tādā nozīmē, ka Enumeration ir pieejama tikai lasīšanas piekļuve kolekcijas elementiem. No otras puses, Iterator var lasīt, kā arī noņemt elementus no kolekcijas. Svarīga atšķirība starp Iteratoru un uzskaitījumu ir tā, ka Uzskaitījums nevar piemērot kolekciju klasēm, tas ir piemērojams tikai mantotajām klasēm. No otras puses Iterators ir piemērojams kolekcijas klasēm, tāpēc to sauc par universālo kursoru. Izmantojot zemāk parādīto salīdzināšanas diagrammu, iemācīsimies vēl dažas atšķirības starp Iterator un Enumeration.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsIterators Uzskaitījums
PamataIterators ir universāls kursors, jo tas ir piemērojams visām kolekcijas klasēm.Uzskaitīšana nav universāls kursors, jo attiecas tikai uz mantotajām klasēm.
PiekļuveIzmantojot Iterator, jūs varat lasīt un noņemt kolekcijas elementus.Izmantojot skaitīšanu, jūs varat lasīt tikai kolekcijas elementus.
Metodespubliskais Būla hasnext ();
sabiedriski objekti blakus ();
public void noņemt ();
publiskajam Būla irMoreElements ();
publisks objekts nextElement ();
IerobežojumiIterators ir vienvirziena priekšējās piekļuves kursors.
Iterators nevar aizstāt nevienu kolekcijas elementu.
Iterators kolekcijā nevar pievienot nevienu jaunu elementu.
Uzskaitīšana ir vienvirziena priekšējās piekļuves kursors.
Uzskaitīšana atbalsta tikai mantotās klases.
Uzskaitei ir tikai lasāma piekļuve kolekcijas elementiem.
PārvarētLai pārvarētu Iterator ierobežojumus, jums jāizvēlas ListIterator.Lai pārvarētu uzskaitīšanas ierobežojumus, jums jāizvēlas Iterators.


Iteratoru saskarnes definīcija

Iterators ir saskarne kolekcijas ietvarā. Tā kā Iterators ir piemērojams visām kolekcijas klasēm, to sauc par universālo kursoru. Tas ir kursors, ko izmanto, lai piekļūtu kolekcijas elementiem pa vienam. Izmantojot Iterator, jūs varat izgūt elementus no kolekcijas, un, ja vēlaties, varat arī noņemt elementus no kolekcijas. Iteratora objektu var izveidot, kā norādīts zemāk.

Iterators itr = Collc.iterator ();

Mainīgais itr ir Iteratora objekts. Collc ir jebkurš savākšanas objekts, kas jāapstrādā vai jāizkārto, izmantojot Iteratora objektu (itr). iterators () ir metode, ko izmanto atkārtotāja objekta izveidošanai. Iteratorā ir trīs metodes, kā parādīts zemāk.

publiskais Būla hasnext (); public Object next (); public void noņemt ();

Pirmā metode hasnext () pārbauda, ​​vai kolekcijā ir kādi elementi vai nav. Ja kolekcijai ir elementi, tā atgriezīsies patiesa, pretējā gadījumā atgriezīsies nepatiesa. Otrā metode Nākamais() tiek izmantots, lai izgūtu nākamo kolekcijas elementu. Trešā metode noņemt () tiek izmantots, lai izdzēstu elementus no kolekcijas.


Iterators kolekcijā var ceļot tikai uz priekšu, ceļojuma laikā tas nevar pārvietoties atpakaļ. Iterators var noņemt elementu no kolekcijas, taču tam nav iespēju aizstāt esošo elementu ar jaunu elementu, kā arī tas nevar pievienot kolekcijai nevienu jaunu elementu. Lai pārvarētu šos ierobežojumus, varat doties uz ListIterator saskarni.

Uzskaitīšanas saskarnes definīcija

Uzskaitījums ir interfeiss, kas piemērojams mantojums klases, un to nevar piemērot nevienai kolekcijas klasei. Tādējādi tas nav universāls kursors. Uzskaitīšana elementu (objektu) no kolekcijas izgūst pa vienam. Uzskaitīšanas objektam ir tikai lasāma piekļuve kolekcijas elementiem. Uzskaitīšanas objekts nevar mainīt nevienu kolekcijas elementu. Ļaujiet mums redzēt, kā izveidot uzskaites objektu, apskatīsimies.

Uzskaite er = Vect.elements ();

Mainīgais er ir uzskaitīšanas objekts. Vect ir vektoru klases objekts, kas jāšķērso ar uzskaitījuma objektu (-iem). Metode elements () tiek izmantots, lai izveidotu Uzskaitīšanas objektu. Uzskaitīšanas saskarnē ir tikai divas metodes, kā parādīts zemāk.

publiskajam Būla irMoreElements (); publisks nākamaisElements ();

Pirmā metode hasMoreElements () tiek izmantots, lai pārbaudītu kolekcijas statusu, vai tajā ir elementi vai tā ir tukša. Ja kolekcijai ir elementi, metode hasMoreElements () atgriešanās patiesa, cits atgriešanās nepatiess. Otrā metode nākamaisElements () tiek izmantots, lai pa vienam iegūtu elementus no kolekcijas. Kad šķērsošana ir pabeigta, tiek nomainīta nākamā elementa () metode NoSuchElementException. Objekts Uzskaitīšana pārvietojas tikai uz priekšu. To nevar pievienot, noņemt vai aizstāt nevienu kolekcijas elementu. Lai pārvarētu šos uzskaitījuma ierobežojumus, jums jāizvēlas Iterators.

  1. Galvenā atšķirība starp Iterator un Enumeration ir tā, ka Iterator ir universāls kursors, ko var izmantot jebkura kolekcijas objekta atkārtošanai. No otras puses, uzskaitījums tiek izmantots tikai mantojuma klases objekta šķērsošanai.
  2. Uzskaitīšanas objektam ir tikai lasīšanas piekļuve kolekcijas elementiem. Tomēr Iterator objekts var nolasīt un noņemt elementus no kolekcijas.
  3. Ir divas atkārtojuma metodes: viena, lai pārbaudītu kolekcijas statusu, un viena, lai izgūtu elementus no kolekcijas. Papildus skaitīšanas metodēm Iteratoram ir vēl viena metode elementu noņemšanai no kolekcijas.
  4. Uzskaitīšanas ierobežojumi ir vienvirziena kursors uz priekšu, tam ir tikai lasīšanas piekļuve un to var izmantot kolekcijas klasēs. No otras puses, Iterator nevar aizstāt vai pievienot jaunus kolekcijas elementus, un, tāpat kā Enumeration, tā arī virzās uz priekšu vienvirziena kursoru.
  5. Uzskaitīšanas ierobežojumus izlemj Iterator, un Iterator ierobežojumus izlemj ListIterator.

Secinājums:

Mūsdienās tiek izmantots kursors Iterator un ListItertaor, jo tie ir universālie kursori un ir daudz efektīvāki nekā Enumeration.