Generalnie są pięć sposoby iteracji po a Mapa w Jawie. W tym artykule omówimy je wszystkie, a także przyjrzymy się ich zaletom i wadom.
Przede wszystkim my Nie mogę iteruj mapę bezpośrednio, używając iteratory , ponieważ Map nie są Kolekcja. Zanim przejdziesz dalej, musisz trochę się o tym dowiedzieć Mapa.Wpis interfejs.
Ponieważ wszystkie mapy w Javie implementują Mapa interfejs, następujące techniki będą działać w przypadku dowolnej implementacji mapy ( HashMap , TreeMap , LinkedHashMap , Hashtable itp.)
1. Iteracja po Map.entrySet() przy użyciu pętli For-Each:
Mapa.entrySet() metoda zwraca widok kolekcji ( Ustawić
Jawa
jak wywołać metodę w Javie
// 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());> > }> }> |
>
>
Wyjście:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
2. Iteracja po kluczach lub wartościach przy użyciu metod keySet() i wartości().
Mapa.keySet() Metoda zwraca widok zestawu kluczy zawartych w tej mapie i Mapa.wartości() Metoda zwraca widok kolekcji wartości zawartych na tej mapie. Jeśli więc potrzebujesz tylko kluczy lub wartości z mapy, możesz iterować po zestawie kluczy lub wartościach, używając pętli for-each. Poniżej znajduje się program Java, który to zademonstruje.
Jawa
długość łańcucha basha
// 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);> > }> }> |
>
>
Wyjście:
key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>
3. Iterowanie przy użyciu iteratorów Mapa.Wpis
Metoda ta jest nieco podobna do pierwszej. W pierwszej metodzie używamy pętli for-each na Map.Entry, ale tutaj używamy iteratory . Używanie iteratorów w stosunku do Map.Entry ma swoją zaletę, tj. możemy usunąć wpisy z mapy podczas iteracji, wywołując iterator.usuń() metoda.
Jawa
// 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());> > }> > }> }> |
>
„abc” w liczbach
>
Wyjście:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
4. Użycie metody forEach(action):
W Javie 8 możesz iterować mapę za pomocą Map.forEach(akcja) metoda i zastosowanie wyrażenie lambda . Ta technika jest czysta i szybka.
Jawa
// 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));> > > }> }> |
>
>
Wyjście :
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
5. Iterowanie po kluczach i wyszukiwanie wartości (nieefektywne)
Tutaj najpierw zapętlamy klucze (używając Mapa.keySet() metoda), a następnie wyszukaj wartość (używając Mapa.get(klucz) metoda) dla każdego klucza. Ta metoda nie jest stosowana w praktyce, ponieważ jest dość powolna i nieefektywna, ponieważ pobieranie wartości za pomocą klucza może być czasochłonne.
Jawa
rzutowanie typów i konwersja typów w Javie
// 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);> > }> > }> }> |
>
>
Wyjście:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
Bibliografia : Przepełnienie stosu