Iterácia nad mapou v Jave
1. Prehľad
V tomto rýchlom článku sa pozrieme na rôzne spôsoby iterácie cez položky Mapy v Jave.
Jednoducho povedané, môžeme extrahovať obsah mapy pomocou keySet (), valueSet () alebo entrySet (). Keďže ide o všetky množiny, pre všetky platia podobné zásady iterácie.
The Map.entrySet API vráti pohľad na mapu, ktorej prvky sú z Mapa trieda. Jediný spôsob, ako získať odkaz na jeden záznam mapy, je z iterátora tohto zobrazenia kolekcie.
T on entry.getKey () vráti kľúč a entry.getValue () vráti zodpovedajúcu hodnotu.
Pozrime sa na niekoľko z nich.
2. Sada položiek a pre Loop
Najprv sa pozrime, ako na to iterovať cez a Mapa pomocou VstupNastaviť:
public void iterateUsingEntrySet (Map map) {for (Map.Entry entry: map.entrySet ()) {System.out.println (entry.getKey () + ":" + entry.getValue ()); }}
Tu prevádzame našu mapu na množinu záznamov a potom ich iterujeme pomocou klasického prístupu pre každú z nich.
Ku kľúču každého záznamu môžeme získať zavolaním getKey () a k hodnote každého záznamu môžeme získať zavolaním getValue ().
3. Iterátor a Sada položiek
Ďalším prístupom by bolo získať množinu záznamov a vykonať iteráciu pomocou znaku Iterátor:
public void iterateUsingIteratorAndEntry (mapa mapy) {Iterator iterátor = map.entrySet (). iterátor (); while (iterator.hasNext ()) {Map.Entry entry = iterator.next (); System.out.println (entry.getKey () + ":" + entry.getValue ()); }}
Všimnite si, ako môžeme získať Iterátor napríklad pomocou iterátor () API z entrySet (). Potom, ako obvykle, prechádzame iterátorom s iterator.next ().
4. S Lambdami
Pozrime sa teraz, ako iterovať a Mapa použitím lambda výrazy.
Rovnako ako väčšina ostatných vecí v prostredí Java 8 sa ukazuje, že je to oveľa jednoduchšie ako alternatívy; využijeme pre každý() metóda:
public void iterateUsingLambda (mapa mapy) {map.forEach ((k, v) -> System.out.println ((k + ":" + v))); }
V takom prípade nemusíme mapu prevádzať na množinu záznamov. Ak sa chcete dozvedieť viac informácií o výrazoch lambda, môžete začať tu.
5. Prúd API
Prúd API je jednou z hlavných funkcií Java 8. Túto funkciu môžeme použiť na prepínanie medzi a Mapa rovnako, ale ako v predchádzajúcich príkladoch, musíme najskôr získať množinu záznamov:
public void iterateUsingStreamAPI (mapa mapy) {map.entrySet (). stream () // ... .forEach (e -> System.out.println (e.getKey () + ":" + e.getValue ()) ); }
To by sa malo použiť, keď plánujeme urobiť nejaké ďalšie Prúd spracovanie. Inak je to len jednoduché pre každý() ako je opísané vyššie.
Ak sa chcete dozvedieť viac o Prúd API, pozrite si tento článok.
6. Záver
V tomto tutoriáli sme sa zamerali na jednoduchú, ale kritickú operáciu - iteráciu cez záznamy mapy.
Videli sme niekoľko metód, ktoré je možné použiť iba v prostredí Java 8, a to výrazy Lambda a Prúd API.
Ako vždy, príklady kódov v článku nájdete na GitHub.