logo

Ako iterovať akúkoľvek mapu v Jave

Vo všeobecnosti existujú päť spôsoby iterácie cez a Mapa v Jave. V tomto článku si ich všetky rozoberieme a pozrieme sa aj na ich výhody a nevýhody.
V prvom rade my nemôže iterujte mapu priamo pomocou iterátorov , pretože Mapy nie sú Zbierka. Predtým, ako pôjdete ďalej, musíte o tom niečo vedieť Mapa.Vstup rozhranie.
Pretože všetky mapy v Jave implementujú Mapa rozhranie, nasledujúce techniky budú fungovať pre akúkoľvek implementáciu mapy (HashMap, TreeMap, LinkedHashMap, Hashtable atď.)

1. Iterácia cez Map.entrySet() pomocou cyklu For-Each :
Map.entrySet() metóda vracia kolekciu-view( Set ) máp obsiahnutých v tejto mape. Takže môžeme iterovať cez pár kľúč-hodnota pomocou getKey() a getValue() metódy Mapa.Vstup . Táto metóda je najbežnejšia a mala by sa použiť, ak v slučke potrebujete kľúče mapy aj hodnoty. Nižšie je uvedený java program, ktorý to demonštruje.

Java




vyhľadávacie algoritmy



// Java program to demonstrate iteration over> // Map.entrySet() entries using for-each loop> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using for-each loop for iteration over Map.entrySet()> >for> (Map.Entry entry : gfg.entrySet())> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> }>

>

>

Výkon:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

2. Iterácia kľúčov alebo hodnôt pomocou metód keySet() a values().
Map.keySet() metóda vráti zobrazenie Set kľúčov obsiahnutých v tejto mape a Map.values() metóda vracia kolekciu hodnôt obsiahnutých v tejto mape. Takže ak potrebujete iba kľúče alebo hodnoty z mapy, môžete iterovať cez sadu kľúčov alebo hodnoty pomocou slučiek for-each. Nižšie je uvedený java program, ktorý to demonštruje.

Java




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using keySet() for iteration over keys> >for> (String name : gfg.keySet())> >System.out.println(>'key: '> + name);> > >// using values() for iteration over values> >for> (String url : gfg.values())> >System.out.println(>'value: '> + url);> >}> }>

>

sql dátové typy
>

Výkon:

key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>

3. Iterácia pomocou iterátorov cez Mapa.Vstup
Táto metóda je trochu podobná prvej. V prvej metóde používame pre každú slučku cez Map.Entry, ale tu používame iterátorov . Používanie iterátorov cez Map.Entry má svoju výhodu, t.j. môžeme odstrániť záznamy z mapy počas iterácie volaním iterator.remove() metóda.

Java




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> import> java.util.Iterator;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using iterators> >Iterator itr = gfg.entrySet().iterator();> > >while>(itr.hasNext())> >{> >Map.Entry entry = itr.next();> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> >}> }>

>

>

Výkon:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

4. Použitie metódy forEach(action):
V Java 8 môžete iterovať mapu pomocou Map.forEach(akcia) spôsob a použitie lambda výraz . Táto technika je čistá a rýchla.

Java

môj flixer




// Java code illustrating iteration> // over map using forEach(action) method> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// forEach(action) method to iterate map> >gfg.forEach((k,v) ->System.out.println(>'Key = '> >+ k +>', Value = '> + v));> > >}> }>

>

>

Výkon :

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

5. Iterovanie cez kľúče a hľadanie hodnôt (neefektívne)
Tu najprv prejdeme cez klávesy (pomocou Map.keySet() metóda) a potom vyhľadajte hodnotu (pomocou Map.get (kľúč) metóda) pre každý kľúč. Táto metóda sa v praxi nepoužíva, pretože je dosť pomalá a neefektívna, pretože získavanie hodnôt kľúčom môže byť časovo náročné.

Java




// Java program to demonstrate iteration> // over keys and searching for values> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// looping over keys> >for> (String name : gfg.keySet())> >{> >// search for value> >String url = gfg.get(name);> >System.out.println(>'Key = '> + name +>', Value = '> + url);> >}> >}> }>

nekonečná slučka
>

>

Výkon:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

Referencie: Stackoverflow