Ncua vs Iterator
Muaj ntau cov ntaub ntawv uas ua raws li kev sau hauv Java xws li Vectors, Hash tables thiab cov chav kawm uas siv Java Collections Framework (ie HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap thiab LinkedHashSet). Muaj ntau txoj hauv kev los rov hais dua los ntawm tus kheej ntawm cov khoom hauv Java. Java muab ob lub interfaces los ua kom txoj haujlwm no yooj yim dua. Enumeration thiab Iterator yog ob qho ntawm cov interfaces pom nyob rau hauv java.util pob uas muab kev ua haujlwm los suav nrog cov kab ke lossis cov khoom nrog cov khoom siv. Tus lej suav tau qhia hauv JDK 1.0 thiab Iterator uas tau qhia hauv JDK 1.2 zoo li duplicates lub functionality ntawm Enumerator (nyob rau hauv lub Collections Framework).
Tus lej yog dab tsi?
Kev suav sau yog pej xeem sib cuam tshuam hauv Java, qhia hauv JDK 1.0, uas muab lub peev xwm los suav nrog cov kab ke ntawm cov ntsiab lus. Nws pom nyob rau hauv java.util pob. Thaum Enumeration interface yog siv los ntawm ib qho khoom, cov khoom ntawd tuaj yeem tsim cov kab ke ntawm cov khoom. Enumeration interface muaj ob txoj hauv kev. Txoj kev hasMoreElements() yuav kuaj yog tias qhov kev suav sau no muaj ntau lub ntsiab lus thiab cov tom ntejElement() rov qab cov ntsiab lus tom ntej hauv ntu (yog tias muaj tsawg kawg ib qho ntxiv mus). Hauv lwm lo lus, los ntawm kev hu rau nextElement() txuas ntxiv, tus programmer tuaj yeem nkag mus rau tus kheej cov ntsiab lus hauv koob. Piv txwv li, los luam tag nrho cov ntsiab lus hauv Vector v1 siv Enumerator, cov kab lus hauv qab no tuaj yeem siv tau.
npe e=v1.elements();
While(e.hasMoreLements()){
System.out.println(e.nextElement());
}
Tus lej suav kuj tseem siv tau los txhais cov kwj ntawm cov tswv yim rau SequenceInputStream cov khoom.
Iterator yog dab tsi?
Iterator yog pej xeem sib cuam tshuam hauv Java.util pob, uas tso cai rau iterating los ntawm cov ntsiab lus ntawm cov khoom sau uas siv cov Collections moj khaum (xws li ArrayList, LinkedList, thiab lwm yam). Qhov no tau qhia nyob rau hauv JDK 1.2 thiab hloov tus Enumerator hauv Java Collections Framework. Iterator muaj peb txoj hauv kev. Cov txheej txheem hasNext() kuaj seb puas muaj cov khoom seem hauv cov khoom sau thiab cov txheej txheem tom ntej () rov qab cov khoom tom ntej hauv koob. Txoj kev tshem tawm () tuaj yeem siv los tshem tawm cov khoom tam sim no los ntawm kev sau hauv qab. Piv txwv li, los luam tag nrho cov ntsiab lus hauv Vector v1 siv Iterator, cov kab lus hauv qab no tuaj yeem siv tau.
Iterator i=v1.elements();
While(i.hasNext()){
System.out.println(e.next());
}
Dab tsi yog qhov txawv ntawm Kev Sau Npe thiab Iterator?
Txawm hais tias, Enumeration thiab Iterator yog ob qho ntawm cov kev sib tshuam pom hauv java.util pob, uas tso cai rau iterating / suav los ntawm cov ntsiab lus ntawm cov koob, lawv muaj qhov sib txawv. Qhov tseeb, Iterator, uas tau qhia tom qab Enumeration, hloov qhov Enumeration hauv Java Collections moj khaum. Tsis zoo li Enumeration, Iterator tsis muaj kev nyab xeeb. Qhov no txhais tau hais tias kev hloov kho ib txhij (rau qhov sau hauv qab) tsis raug tso cai thaum siv Iterator. Qhov no yog qhov muaj txiaj ntsig zoo hauv ntau qhov chaw ib puag ncig uas muaj kev pheej hmoo ntawm kev hloov kho ib txhij. Nyob rau hauv qhov kev tshwm sim ntawm ib qho kev hloov kho concurrent, cov khoom Iterator yuav pov ib ConcurrentModificationException. Iterator muaj cov npe luv luv piv rau Enumerator. Tsis tas li ntawd, iterator muaj qhov ua haujlwm ntxiv ntawm kev tshem tawm cov ntsiab lus thaum lub sijhawm rov ua dua (uas tsis tuaj yeem siv Enumerator). Yog li, yog tias xav tau tshem tawm cov ntsiab lus los ntawm kev sau, Iterator yog tib txoj kev xaiv uas tuaj yeem txiav txim siab.