logo

Jak iterować dowolną mapę w Javie

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ć ) odwzorowań zawartych na tej mapie. Możemy więc iterować po parze klucz-wartość, używając Weź klucz() I getValue() metody Mapa.Wpis . Ta metoda jest najczęstsza i powinna być używana, jeśli potrzebujesz zarówno kluczy mapy, jak i wartości w pętli. Poniżej znajduje się program Java, który to zademonstruje.



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