Der er generelt fem måder at iterere over en Kort i Java. I denne artikel vil vi diskutere dem alle og også se på deres fordele og ulemper.
Først og fremmest, vi kan ikke gentag et kort direkte vha iteratorer , fordi Map ikke er det Kollektion. Før du går videre, skal du også vide lidt om Kort.Entry interface.
Da alle kort i Java implementerer Kort interface, vil følgende teknikker fungere for enhver kortimplementering (HashMap, TreeMap, LinkedHashMap, Hashtable, osv.)
1. Iteration over Map.entrySet() ved hjælp af For-Each loop:
Map.entrySet() metode returnerer en samlingsvisning( Sæt
Java
hvordan man opretter et array i java
// 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. Iteration over nøgler eller værdier ved hjælp af metoderne keySet() og values().
Map.keySet() metoden returnerer en Set-visning af nøglerne indeholdt i dette kort og Map.values() metoden returnerer en samlingsvisning af værdierne indeholdt i dette kort. Så hvis du kun har brug for nøgler eller værdier fra kortet, kan du iterere over nøglesæt eller værdier ved at bruge for-hver sløjfer. Nedenfor er java-programmet til at demonstrere det.
Java
hvis andet hvis andet hvis 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);> >}> }> |
>
>
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 ved hjælp af iteratorer over Kort.Entry
Denne metode ligner lidt den første. I den første metode bruger vi for-each loop over Map.Entry, men her bruger vi iteratorer . At bruge iteratorer over Map.Entry har sin egen fordel, dvs. vi kan fjerne poster fra kortet under iteration ved at ringe iterator.remove() metode.
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());> >}> >}> }> |
>
>
streng i int
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. Brug af forEach(action)-metoden:
I Java 8 kan du iterere et kort vha Map.forEach(action) metode og brug lambda udtryk . Denne teknik er ren og hurtig.
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));> > >}> }> |
>
>
Output:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
5. Iteration over nøgler og søgning efter værdier (ineffektiv)
Her går vi først over taster (ved hjælp af Map.keySet() metode) og søg derefter efter værdi (ved hjælp af Map.get(key) metode) for hver nøgle. Denne metode bruges ikke i praksis, da den er ret langsom og ineffektiv, da det kan være tidskrævende at hente værdier ved hjælp af en nøgle.
Java
hvordan man omdøber en mappe i linux
// 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>
Referencer: Stackoverflow