Loendamine vs itteraator
Java-s on kollektsioonidena toimivad paljud andmestruktuurid nagu Vectors, Hash tabelid ja klassid, mis rakendavad Java Collections Framework'i (nt HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap ja LinkedHashSet). Java objektide üksikute elementide kaudu kordamiseks on palju võimalusi. Java pakub selle ülesande hõlbustamiseks kahte liidest. Loend ja Iterator on kaks paketti java.util leitud liidest, mis pakuvad funktsionaalsust, et loendada üksuste komplektiga järjestuste või objektide kaudu. Loendaja võeti kasutusele JDK 1.0-s ja Iterator, mis võeti kasutusele JDK 1.2-s, dubleerib praktiliselt loenduri funktsionaalsust (kogude raamistikus).
Mis on loendamine?
Loendamine on JDK 1.0-s kasutusele võetud avalik liides Java-s, mis pakub loendit elementide järjestuste kaudu. Selle leiate pakendi java.util alt. Kui loendiliides on objekti poolt rakendatud, saab see objekt genereerida elementide järjestuse. Loendamisliidesel on kaks meetodit. Meetod hasMoreElements () testib, kas see loend sisaldab rohkem elemente ja nextElement () tagastab järjestuse järgmise elemendi (kui veel on vähemalt üks). Teisisõnu, kutsudes järjestikku nextElement (), saab programmeerija juurdepääsu sarja üksikutele elementidele. Näiteks kõigi vektori v1 elementide printimiseks loenduri abil saab kasutada järgmist koodilõiku.
Loendamine e = v1.elemendid ();
Kuigi (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}
Loendurit saab kasutada ka objektide SequenceInputStream sisendvoo määratlemiseks.
Mis on iteraator?
Iterator on Java.util paketis olev avalik liides, mis võimaldab itereerida kollektsiooni raamistikku rakendavate kollektsiooniobjektide elementide kaudu (näiteks ArrayList, LinkedList jne). See võeti kasutusele JDK 1.2-s ja see asendas Java kogurite raamistikus loendajat. Iteratoril on kolm meetodit. Meetod hasNext () testib, kas kollektsioonis on veel elemente ja järgmine () meetod tagastab seeria järgmise elemendi. Meetodit Remove () saab kasutada praeguse elemendi eemaldamiseks aluseks olevast kogust. Näiteks kõigi vektori v1 elementide printimiseks Iteratori abil saab kasutada järgmist koodilõiku.
Iteraator i = v1.elemendid ();
Kuigi (i.hasNext ()) {
System.out.println (e.next ());
}
Mis vahe on loendusel ja itaatoril?
Kuigi loend ja itteraator on kaks paketis java.util leiduvat liidest, mis võimaldavad seeria elementide kaudu itereerida / loendada, on neil oma erinevused. Tegelikult asendab Iterator, mis võeti kasutusele pärast loendamist, Java kogude raamistikus loendit. Erinevalt loendamisest on Iterator tõrkekindel. See tähendab, et samaaegsed modifikatsioonid (aluseks oleva kollektsiooni) ei ole lubatud, kui kasutatakse iteraatorit. See on väga kasulik mitmekeermelistes keskkondades, kus alati on samaaegsete muudatuste oht. Samaaegse modifikatsiooni korral viskab Iteratori objekt ConcurrentModificationException. Iteratoril on loenduriga võrreldes lühemad meetodinimed. Lisaksiteraatoril on täiendav funktsioon elementide kustutamiseks iteratsiooni ajal (mis pole loenduri abil võimalik). Seega, kui on vaja elemente kollektsioonist eemaldada, on Iterator ainus võimalus, mida saab kaaluda.