logo

Hur man itererar valfri karta i Java

Det finns i allmänhet fem sätt att iterera över en Karta i Java. I den här artikeln kommer vi att diskutera dem alla och även titta på deras fördelar och nackdelar.
Först av allt, vi kan inte iterera en karta direkt med hjälp av iteratorer , eftersom Map inte är det Samling. Innan du går vidare måste du också veta lite om Map.Entry gränssnitt.
Eftersom alla kartor i Java implementerar Karta gränssnitt, kommer följande tekniker att fungera för alla kartimplementeringar (HashMap , TreeMap , LinkedHashMap , Hashtable , etc.)

1. Iterera över Map.entrySet() med For-Each loop :
Map.entrySet() metod returnerar en samlingsvy( Uppsättning ) av kartorna som finns i denna karta. Så vi kan iterera över nyckel-värdepar med hjälp av getKey() och getValue() metoder för Map.Entry . Denna metod är vanligast och bör användas om du behöver både kartnycklar och värden i slingan. Nedan är java-programmet för att demonstrera det.

Java




java len av array



// 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());> >}> }>

>

>

Produktion:

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

2. Iterera över nycklar eller värden med metoderna keySet() och values().
Map.keySet() metod returnerar en Set-vy av nycklarna som finns i denna karta och Map.values() metod returnerar en samlingsvy av värdena som finns i denna karta. Så om du bara behöver nycklar eller värden från kartan kan du iterera över keySet eller värden med hjälp av för varje loop. Nedan är java-programmet för att demonstrera det.

Java


datumformat.format



// 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);> >}> }>

>

>

Produktion:

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

3. Iterering med iteratorer över Map.Entry
Denna metod liknar den första metoden. I den första metoden använder vi for-each loop över Map.Entry, men här använder vi iteratorer . Att använda iteratorer över Map.Entry har sin egen fördel, dvs. vi kan ta bort poster från kartan under iteration genom att ringa iterator.remove() metod.

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());> >}> >}> }>

>

>

exempel på javascript-exempel

Produktion:

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

4. Använda metoden forEach(action):
I Java 8 kan du iterera en karta med Map.forEach(action) metod och användning lambda uttryck . Denna teknik är ren och snabb.

Java




// 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));> > >}> }>

>

>

Utgång:

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

5. Iterera över nycklar och söka efter värden (ineffektivt)
Här går vi först över tangenter (med Map.keySet() metod) och sök sedan efter värde(med Map.get(key) metod) för varje nyckel. Den här metoden används inte i praktiken eftersom den är ganska långsam och ineffektiv eftersom det kan vara tidskrävande att hämta värden med en nyckel.

java om annat

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);> >}> >}> }>

>

>

Produktion:

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

Referenser: Stackoverflow