Erinevus loenduse ja iteraatori vahel

Erinevus loenduse ja iteraatori vahel
Erinevus loenduse ja iteraatori vahel

Video: Erinevus loenduse ja iteraatori vahel

Video: Erinevus loenduse ja iteraatori vahel
Video: "Refleks" - depressiooni ära tundmisest ja abi otsimisest 2024, Juuli
Anonim

Loendamine vs iteraator

Javas on kogumikena toimivaid andmestruktuure, nagu vektorid, räsitabelid ja klassid, mis rakendavad Java kollektsioonide raamistikku (nt HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap ja LinkedHashSet). Java objektide üksikute elementide läbimiseks on mitmeid viise. Java pakub selle ülesande hõlbustamiseks kahte liidest. Loend ja Iterator on kaks paketis java.util leiduvat liidest, mis pakuvad üksuste komplektiga järjestuste või objektide loendamise funktsioone. Loendajat tutvustati JDK 1-s.0 ja Iterator, mis võeti kasutusele JDK 1.2-s, dubleerivad praktiliselt loenduri funktsionaalsust (kogude raamistikus).

Mis on loendus?

Loendumine on Java avalik liides, mis on kasutusele võetud versioonis JDK 1.0, mis võimaldab loendada elementide jadade kaudu. Selle leiate paketi java.util alt. Kui loendi liidest rakendab objekt, saab see objekt genereerida elementide jada. Loendamisliidesel on kaks meetodit. Meetod hasMoreElements() testib, kas see loend sisaldab rohkem elemente ja nextElement() tagastab jada järgmise elemendi (kui vaja on veel vähem alt üks). Teisisõnu, kutsudes järjestikku nextElement(), pääseb programmeerija seeria üksikutele elementidele juurde. Näiteks kõigi elementide Vector v1 printimiseks loenduri abil saab kasutada järgmist koodilõiku.

Loend e=v1.elements();

While(e.hasMoreLements()){

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

}

Loendurit saab kasutada ka SequenceInputStreami objektide sisendvoo määratlemiseks.

Mis on Iterator?

Iterator on Java.util paketi avalik liides, mis võimaldab itereerida kogude raamistikku rakendavate koguobjektide elemente (nt ArrayList, LinkedList jne). See võeti kasutusele JDK 1.2-s ja asendas Java kogude raamistiku loendi. Iteraatoril on kolm meetodit. Meetod hasNext() testib, kas kogus on veel elemente ja meetod next() tagastab seeria järgmise elemendi. Meetodit remove() saab kasutada aktiivse elemendi eemaldamiseks aluseks olevast kogust. Näiteks vektor v1 kõigi elementide printimiseks Iteratori abil saab kasutada järgmist koodilõiku.

Iteraator i=v1.elements();

While(i.hasNext()){

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

}

Mis vahe on loendusel ja iteraatoril?

Kuigi loendus ja iteraator on kaks paketis java.util leiduvat liidest, mis võimaldavad itereerida/loendada seeria elementide kaudu, on neil siiski oma erinevused. Tegelikult asendab Iterator, mis võeti kasutusele pärast loendust, Java kogude raamistikus loendi. Erinev alt loendamisest on Iterator tõrkekindel. See tähendab, et Iteratori kasutamisel ei ole samaaegsed muudatused (aluskogusse) lubatud. See on väga kasulik mitme lõimega keskkondades, kus on alati samaaegsete muudatuste oht. Samaaegse muudatuse korral loob Iteraatori objekt ConcurrentModificationException. Iteraatoril on loenduriga võrreldes lühemad meetodite nimed. Lisaks on iteraatoril täiendav funktsioon iteratsiooni ajal elementide kustutamiseks (mis pole loenduri abil võimalik). Seega, kui on vaja kogust elemente eemaldada, on Iterator ainus võimalus, mida saab kaaluda.

Soovitan: