Vyčíslenie vs. Iterátor
Existuje veľa dátových štruktúr, ktoré fungujú ako zbierky v Java, ako sú vektory, tabuľky hash a triedy, ktoré implementujú rámec Java Collection Framework (t. J. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap a LinkedHashSet). Existuje mnoho spôsobov, ako opakovať jednotlivé prvky objektov v Jave. Java poskytuje dve rozhrania na uľahčenie tejto úlohy. Enumeration a Iterator sú dve rozhrania nachádzajúce sa v balíku java.util, ktoré poskytujú funkčnosť na výčet pomocou sekvencií alebo objektov so sadou položiek. Enumerator bol predstavený v JDK 1.0 a Iterator, ktorý bol predstavený v JDK 1.2, prakticky duplikuje funkčnosť Enumerátora (v rámci Framework Framework)..
Čo je to výpočet?
Enumeration je verejné rozhranie v Jave, zavedené v JDK 1.0, ktoré poskytuje výčtu prostredníctvom sekvencií prvkov. Nachádza sa v balíku java.util. Keď implementuje rozhranie Enumeration objekt, tento objekt môže vygenerovať sekvenciu prvkov. Rozpočtové rozhranie má dve metódy. Metóda hasMoreElements () otestuje, či toto vymenovanie obsahuje viac prvkov a nextElement () vráti ďalší prvok v sekvencii (ak je k dispozícii najmenej jeden ďalší). Inými slovami, postupným volaním nextElement () môže programátor pristupovať k jednotlivým prvkom v sérii. Napríklad na tlač všetkých prvkov vo vektore v1 pomocou enumerátora sa môže použiť nasledujúci útržok kódu.
Vyčíslenie e = v1.elements ();
While (e.hasMoreLements ())
System.out.println (e.nextElement ());
Enumerátor sa dá tiež použiť na definovanie toku vstupu do objektov SequenceInputStream.
Čo je Iterátor?
Iterator je verejné rozhranie v balíku Java.util, ktoré umožňuje iteráciu prostredníctvom prvkov objektov kolekcií, ktoré implementujú rámec Kolekcie (napríklad ArrayList, LinkedList, atď.). Toto bolo predstavené v JDK 1.2 a nahradilo Enumerator v rámci Java Collections Framework. Iterátor má tri metódy. Metóda hasNext () testuje, či sú v kolekcii zostávajúce prvky a metóda next () vracia ďalší prvok v sérii. Metódu remove () je možné použiť na odstránenie aktuálneho prvku zo základnej kolekcie. Napríklad na tlač všetkých prvkov vo vektore v1 pomocou Iterátora je možné použiť nasledujúci útržok kódu.
Iterátor i = v1.elements ();
Kým (i.hasNext ())
System.out.println (e.next ());
Aký je rozdiel medzi výpočtom a Iterátorom?
Aj keď Enumeration a Iterator sú dve rozhrania nachádzajúce sa v balíku java.util, ktoré umožňujú iteráciu / výpočet pomocou prvkov série, majú svoje rozdiely. V skutočnosti Iterator, ktorý bol uvedený po Enumeration, nahrádza Enumeration v rámci Java Collections framework. Na rozdiel od Enumeration je Iterator v bezpečí. To znamená, že súčasné úpravy (základnej kolekcie) nie sú povolené, keď sa používa Iterator. Toto je veľmi užitočné v prostrediach s viacerými vláknami, kde vždy existuje riziko súbežných úprav. V prípade súbežnej úpravy objekt Iterator vyvolá výnimku ConcurrentModificationException. Iterator má kratšie názvy metód v porovnaní s Enumerator. Okrem toho má iterátor dodatočnú funkčnosť odstraňovania prvkov počas iterácie (čo nie je možné pomocou programu Enumerator). Takže ak existuje potreba odstrániť prvky zo zbierky, Iterator je jedinou možnosťou, ktorú je možné zvážiť.