V Javě existuje rozdíl mezi Iteratorem a Iterableem?


Odpověď 1:

Názvy rozhraní jsou dokonale vhodné, měly by vám dát nápovědu, ne-li již přímou odpověď. Třída implementující rozhraní Iterable je - ITERABLE.

Takže to může být iterováno v této třídě.

Toto je například používáno pro každou smyčku:

pro (položka položky: položky) {System.out.println (položka); }

Tento kód bude fungovat POUZE za podmínky, že „položky“ je třída implementující rozhraní Iterable.

Iterable rozhraní má jen jednu metodu:

Iterátor iterátor ();

Vrátí iterátor a iterátor bude interně používán JVM k iteraci vašeho objektu.

Iterátor je objekt používaný k opakování přes jiný objekt. Stejně jako objekt inteligentního ukazatele ukládá stav (aktuální, poslední, další, má další ...).

Dalo by se říci - neměnný je strom hrušek. Iterátor je hruška. Strom hrušek „vrací hrušky“. Strom hrušek není hruška.

(není to dokonalý obrázek, ale musím přiznat, ale doufám, že ten nápad získáte ;-)

Online zdrojový kód Iterable (OpenJdk):

Iterable - java.lang.Iterable (.java) - Zdroj rozhraní GrepCode

Zdrojový kód online Iterator (OpenJdk):

Iterator - java.util.Iterator (.java) - Zdroj rozhraní GrepCode


Odpověď 2:

Díky za A2A

Pokud něco implementuje „Iterable“, můžete na něj zavolat metodu .iterator () a zadat objekt Iterator. To se děje „pod kryty“ ve smyčce for for.

Iterátor je instance objektu, která si pamatuje, kde to je, ve sbírce věcí. Pokaždé, když se na to zeptáte, dostanete postupně další věc. Rovněž vám řekne, kdy dojde.

Doufejme, že objekt Iterable vám vrací pokaždé nový, čerstvý iterátor. Pak můžete mít několik částí klientského kódu, které všechny iterují skrz své vlastní rychlosti.


Odpověď 3:

Iterátor je jednoduchý způsob, jak povolit některým cyklům shromažďovat data bez oprávnění k přiřazení (i když je možné je odstranit). Sleduje aktuální prvek a také to, kam půjde dál.

Iterable je jednoduchá reprezentace řady prvků, které mohou být opakovány. Jen nám dává představu, že konkrétní kolekce může být opakována, například můžeme začít od prvního prvku a získat další prvek, poté další a tak dále.


Odpověď 4:

Iterátor je jednoduchý způsob, jak povolit některým cyklům shromažďovat data bez oprávnění k přiřazení (i když je možné je odstranit). Sleduje aktuální prvek a také to, kam půjde dál.

Iterable je jednoduchá reprezentace řady prvků, které mohou být opakovány. Jen nám dává představu, že konkrétní kolekce může být opakována, například můžeme začít od prvního prvku a získat další prvek, poté další a tak dále.