Surašymas vs Iterator
„Java“ yra daugybė duomenų struktūrų, veikiančių kaip kolekcijos, pavyzdžiui, „Vektoriai“, „Hash“ lentelės ir klasės, įgyvendinančios „Java“ rinkinių sistemą (pvz., „HashMap“, „HashSet“, „ArrayList“, „TreeSet“, „TreeMap“, „LinkedList“, „LinkedHashMap“ ir „LinkedHashSet“). Yra daugybė būdų, kaip pasikartoti per atskirus „Java“ objektų elementus. „Java“ teikia dvi sąsajas, kurios palengvina šią užduotį. Įrašymas ir pasikartojimas yra dvi iš „java.util“ paketo rastų sąsajų, kurios suteikia funkciją išvardyti sekomis ar objektais su elementų rinkiniu. Enumerator buvo įvestas JDK 1.0, o Iterator, kuris buvo įvestas JDK 1.2, iš esmės dubliuoja Enumerator funkcijas (kolekcijų rėmuose)..
Kas yra skaičiavimas?
Skaičiavimas yra vieša „Java“ sąsaja, įdiegta JDK 1.0, suteikianti galimybę išvardyti naudojant elementų sekas. Jis randamas po java.util pakuotę. Kai Enumeration sąsają įgyvendina objektas, tas objektas gali generuoti elementų seką. Surašymo sąsaja turi du būdus. Metodas hasMoreElements () patikrins, ar šiame sąraše yra daugiau elementų, o nextElement () grąžina sekantį elementą seka (jei yra dar bent vienas einamasis elementas). Kitaip tariant, iš eilės skambindamas „nextElement“ (), programuotojas gali pasiekti atskirus serijos elementus. Pvz., Norint atspausdinti visus „Vector v1“ elementus naudojant „Enumerator“, gali būti naudojamas šis kodo fragmentas.
Surašymas e = v1.elementai ();
Nors (e.hasMoreLements ())
„System.out.println“ („e.nextElement ()“);
Enumerator taip pat gali būti naudojamas apibrėžti įvesties srautą į „SequenceInputStream“ objektus.
Kas yra Iterator?
„Iterator“ yra vieša „Java.util“ paketo sąsaja, leidžianti tai pakartoti per kolekcijų objektų, įgyvendinančių kolekcijų sistemą, elementus (pvz., „ArrayList“, „LinkedList“ ir kt.). Tai buvo įvesta JDK 1.2 ir pakeitė Enumerator „Java“ rinkinių sistemoje. Iterator turi tris metodus. Metodas hasNext () patikrina, ar kolekcijoje nėra likusių elementų, o kitas () metodas grąžina sekantį elementą serijoje. Pašalinti dabartinį elementą iš pagrindinės kolekcijos gali būti naudojamas metodas pašalinti (). Pvz., Norint atspausdinti visus „Vector v1“ elementus naudojant „Iterator“, gali būti naudojamas šis kodo fragmentas.
Iteratorius i = v1.elementai ();
Nors (i.hasNext ())
„System.out.println“ (e.next ());
Kuo skiriasi Enumeration ir Iterator?
Nors „Enumeration“ ir „Iterator“ yra dvi iš java.util pakete esančių sąsajų, leidžiančių pakartoti / išvardyti per serijos elementus, jie turi skirtumų. Faktiškai „Iterator“, kuris buvo įvestas po „Enumeration“, pakeičia „Enumeration“ „Java“ rinkinių sistemoje. Skirtingai nuo Enumeration, Iterator yra saugus. Tai reiškia, kad naudojant Iterator yra neleidžiama tuo pačiu metu modifikuoti (pagrindinės kolekcijos). Tai labai naudinga aplinkoje, kurioje yra daug sriegių, ten, kur visada yra vienalaikių pakeitimų rizika. Tuo pat metu atliekant pakeitimus, objektas „Iterator“ išmes „ConcurrentModificationException“. Iteratoriai turi trumpesnius metodų pavadinimus, palyginti su Enumerator. Be to, iteratorius turi papildomą funkciją - ištrinti elementus iteracijos metu (tai neįmanoma naudojant Enumerator). Taigi, jei reikia pašalinti elementus iš kolekcijos, vienintelė galimybė, kurią galima apsvarstyti, yra „Iterator“.