I Java er kartgrensesnitt til stede i java.util-pakken representerer en tilordning mellom en nøkkel og en verdi. Java Map-grensesnitt er ikke en undertype av Samlingsgrensesnitt . Derfor oppfører den seg litt annerledes enn resten av samlingstypene. Et kart inneholder unike nøkler.
Geeks, skulle idédugnaden ha vært hvorfor og når du skal bruke Maps.
Kart er perfekte å bruke til kartlegging av nøkkelverdi-assosiasjoner, for eksempel ordbøker. Kartene brukes til å utføre oppslag etter nøkler eller når noen ønsker å hente og oppdatere elementer etter nøkler. Noen vanlige scenarier er som følger:
- Et kart over feilkoder og deres beskrivelser.
- Et kart over postnumre og byer.
- Et kart over ledere og ansatte. Hver leder (nøkkel) er knyttet til en liste over ansatte (verdi) han leder.
- Et kart over klasser og elever. Hver klasse (nøkkel) er knyttet til en liste over elever (verdi).

Opprette kartobjekter
Siden Map er en grensesnitt , objekter kan ikke opprettes av typen kart. Vi trenger alltid en klasse som utvider dette kartet for å lage et objekt. Og også, etter introduksjonen av Generiske legemidler i Java 1.5 er det mulig å begrense typen objekt som kan lagres i kartet.
Syntaks: Definere typesikkert kart
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Kjennetegn ved et kartgrensesnitt
- Et kart kan ikke inneholde dupliserte nøkler, og hver nøkkel kan tilordnes maksimalt én verdi. Noen implementeringer tillater null-nøkkel og null-verdier som HashMap og LinkedHashMap, men noen liker ikke Trekart .
- Rekkefølgen på et kart avhenger av de spesifikke implementeringene. For eksempel, Trekart og LinkedHashMap har forutsigbare ordrer, mens HashMap ikke har det.
- Det er to grensesnitt for å implementere Map i Java. De er Map og SortedMap , og tre klasser: HashMap, TreeMap og LinkedHashMap.
Metoder i Java Map Interface
| Metode | Handling utført |
|---|---|
| klar() | Denne metoden brukes i Java Map Interface for å fjerne og fjerne alle elementene eller tilordningene fra en spesifisert kartsamling. |
| inneholder nøkkel(objekt) | Denne metoden brukes i Kartgrensesnitt i Java for å sjekke om en bestemt nøkkel blir tilordnet kartet eller ikke. Den tar nøkkelelementet som en parameter og returnerer True hvis det elementet er kartlagt i kartet. |
| inneholderverdi(objekt) | Denne metoden brukes i kartgrensesnittet for å sjekke om en bestemt verdi blir kartlagt av en enkelt eller mer enn én nøkkel i kartet. Den tar verdien som en parameter og returnerer True hvis den verdien er kartlagt av noen av nøklene i kartet. |
| entrySet() | Denne metoden brukes i Kartgrensesnitt i Java for å lage et sett av de samme elementene i kartet. Det returnerer i utgangspunktet en sett visning av kartet, eller vi kan lage et nytt sett og lagre kartelementene i dem. |
| lik (objekt) | Denne metoden brukes i Java Map Interface for å se etter likhet mellom to kart. Den verifiserer om elementene i ett kart som sendes som en parameter er lik elementene i dette kartet eller ikke. |
| få (objekt) | Denne metoden brukes til å hente eller hente verdien kartlagt av en bestemt nøkkel nevnt i parameteren. Den returnerer NULL når kartet ikke inneholder noen slik tilordning for nøkkelen. |
| hashkode() | Denne metoden brukes i kartgrensesnitt for å generere en hashkode for det gitte kartet som inneholder nøkler og verdier. |
| er tom() | Denne metoden brukes til å sjekke om et kart har noen oppføring for nøkkel- og verdipar. Hvis det ikke finnes noen tilordning, returnerer dette sant. |
| keySet() | Denne metoden brukes i kartgrensesnitt for å returnere en settvisning av nøklene i dette kartet. Settet støttes av kartet, så endringer i kartet gjenspeiles i settet, og omvendt. |
| put(Objekt, Objekt) | Denne metoden brukes i Java Map Interface for å knytte den angitte verdien til den angitte nøkkelen i dette kartet. |
| putAll(Kart) | Denne metoden brukes i Kartgrensesnitt i Java for å kopiere alle tilordningene fra det angitte kartet til dette kartet. |
| fjern (objekt) | Denne metoden brukes i Kartgrensesnitt for å fjerne tilordningen for en nøkkel fra dette kartet hvis den finnes i kartet. |
| størrelse() | Denne metoden brukes til å returnere antall nøkkel/verdi-par tilgjengelig i kartet. |
| verdier() | Denne metoden brukes i Java Map Interface for å lage en samling av verdiene til kartet. Det returnerer i utgangspunktet en samlingsvisning av verdiene i HashMap. |
| getOrDefault(Objektnøkkel, V defaultValue) | Returnerer verdien som den angitte nøkkelen er tilordnet til, eller standardverdi hvis dette kartet ikke inneholder noen tilordning for nøkkelen. |
| flette (K-nøkkel, V-verdi, BiFunction remappingFunction) | Hvis den angitte nøkkelen ikke allerede er assosiert med en verdi eller er assosiert med null, tilknytt den til den gitte ikke-nullverdien. |
| putIfAbsent(K-nøkkel, V-verdi) | Hvis den angitte nøkkelen ikke allerede er assosiert med en verdi (eller er tilordnet til null), knytter den til den gitte verdien og returnerer null, ellers returnerer den gjeldende assosierte verdien. |
Eksempel:
Java
// Java Program to Demonstrate> // Working of Map interface> > // Importing required classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty HashMap> >Map hm> >=>new> HashMap();> > >// Inserting pairs in above Map> >// using put() method> >hm.put(>'a'>,>new> Integer(>100>));> >hm.put(>'b'>,>new> Integer(>200>));> >hm.put(>'c'>,>new> Integer(>300>));> >hm.put(>'d'>,>new> Integer(>400>));> > >// Traversing through Map using for-each loop> >for> (Map.Entry me :> >hm.entrySet()) {> > >// Printing keys> >System.out.print(me.getKey() +>':'>);> >System.out.println(me.getValue());> >}> >}> }> |
>
>Produksjon:
a:100 b:200 c:300 d:400>
Klasser som implementerer kartgrensesnittet er avbildet i media nedenfor og beskrevet senere som følger:
Last ned YouTube-videoer med vlc

1. HashMap
HashMap er en del av Javas samling siden Java 1.2. Den gir den grunnleggende implementeringen av kartgrensesnittet til Java. Den lagrer dataene i (nøkkel, verdi) par. For å få tilgang til en verdi må man kjenne dens nøkkel. Denne klassen bruker en teknikk som kalles Java
// Java Program to illustrate the Hashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >Map map =>new> HashMap();> > >// Inserting entries in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Produksjon
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
LinkedHashMap er akkurat som HashMap med tilleggsfunksjonen for å opprettholde en rekkefølge av elementer satt inn i den. HashMap ga fordelen med rask innsetting, søk og sletting, men det opprettholdt aldri sporet og rekkefølgen for innsetting som LinkedHashMap gir der elementene kan nås i innsettingsrekkefølgen. La oss se hvordan du lager et kartobjekt ved hjelp av denne klassen.
Eksempel
Java
// Java Program to Illustrate the LinkedHashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty LinkedHashMap> >Map map =>new> LinkedHashMap();> > >// Inserting pair entries in above Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
>
>Produksjon
vishal 10 sachin 30 vaibhav 20>
3. Trekart
De TreeMap i Java brukes til å implementere kartgrensesnittet og NavigableMap sammen med den abstrakte klassen. Kartet er sortert i henhold til den naturlige rekkefølgen av nøklene, eller av en komparator som leveres på tidspunktet for kartoppretting, avhengig av hvilken konstruktør som brukes. Dette viser seg å være en effektiv måte å sortere og lagre nøkkelverdi-parene på. Lagringsrekkefølgen som opprettholdes av trekartet må være konsistent med like, akkurat som alle andre sorterte kart, uavhengig av de eksplisitte komparatorene. La oss se hvordan du lager et kartobjekt ved hjelp av denne klassen.
Eksempel
Java
mylivecricket alternativ
// Java Program to Illustrate TreeMap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an empty TreeMap> >Map map =>new> TreeMap();> > >// Inserting custom elements in the Map> >// using put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> > >// Iterating over Map using for each loop> >for> (Map.Entry e : map.entrySet())> > >// Printing key-value pairs> >System.out.println(e.getKey() +>' '> >+ e.getValue());> >}> }> |
kvikksortering
>
>Produksjon
sachin 30 vaibhav 20 vishal 10>
Utføre operasjoner ved hjelp av Kartgrensesnitt og HashMap-klasse
Siden Map er et grensesnitt, kan det bare brukes med en klasse som implementerer dette grensesnittet. La oss nå se hvordan du utfører noen få ofte brukte operasjoner på et kart ved å bruke det mye brukte HashMap-klassen . Og også, etter introduksjonen av Generiske legemidler i Java 1.5 er det mulig å begrense hvilken type objekt som kan lagres i kartet.
1. Legge til elementer
For å legge til et element på kartet kan vi bruke put()-metoden . Innsettingsrekkefølgen beholdes imidlertid ikke i hashmapet. Internt, for hvert element, genereres en separat hash og elementene indekseres basert på denne hashen for å gjøre den mer effektiv.
Eksempel
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> >// Default Initialization of a> >// Map> >Map hm1 =>new> HashMap();> > >// Initialization of a Map> >// using Generics> >Map hm2> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> > >hm2.put(>new> Integer(>1>),>'Geeks'>);> >hm2.put(>new> Integer(>2>),>'For'>);> >hm2.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(hm1);> >System.out.println(hm2);> >}> }> |
>
>Produksjon
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Endre element
Etter å ha lagt til elementene hvis vi ønsker å endre elementet, kan det gjøres ved å legge til elementet igjen med put()-metoden. Siden elementene i kartet er indeksert ved hjelp av tastene, kan verdien av nøkkelen endres ved ganske enkelt å sette inn den oppdaterte verdien for nøkkelen vi ønsker å endre.
Eksempel
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'Geeks'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >System.out.println(>'Initial Map '> + hm1);> > >hm1.put(>new> Integer(>2>),>'For'>);> > >System.out.println(>'Updated Map '> + hm1);> >}> }> |
>
char til heltall java
>Produksjon
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Fjerning av elementer
For å fjerne et element fra kartet, kan vi bruke remove()-metoden . Denne metoden tar nøkkelverdien og fjerner tilordningen for en nøkkel fra dette kartet hvis den finnes i kartet.
Eksempel
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> >hm1.put(>new> Integer(>4>),>'For'>);> > >// Initial Map> >System.out.println(hm1);> > >hm1.remove(>new> Integer(>4>));> > >// Final Map> >System.out.println(hm1);> >}> }> |
>
>Produksjon
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Iterering gjennom kartet
Det er flere måter å iterere gjennom kartet på. Den mest kjente måten er å bruke en for-hver-løkke og få nøklene. Verdien av nøkkelen er funnet ved å bruke getValue()-metoden.
Eksempel
Java
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> >public> static> void> main(String args[])> >{> > >// Initialization of a Map> >// using Generics> >Map hm1> >=>new> HashMap();> > >// Inserting the Elements> >hm1.put(>new> Integer(>1>),>'Geeks'>);> >hm1.put(>new> Integer(>2>),>'For'>);> >hm1.put(>new> Integer(>3>),>'Geeks'>);> > >for> (Map.Entry mapElement : hm1.entrySet()) {> >int> key = (>int>)mapElement.getKey();> > >// Finding the value> >String value = (String)mapElement.getValue();> > >System.out.println(key +>' : '> + value);> >}> >}> }> |
tring til int
>
>Produksjon
1 : Geeks 2 : For 3 : Geeks>
5. Tell forekomsten av tall ved å bruke Hashmap
I denne koden bruker vi putIfAbsent( ) sammen med Collections.frequency() å telle nøyaktig forekomst av tall. I mange programmer må du telle forekomsten av et bestemt tall eller bokstav. Du bruker følgende tilnærming for å løse den typen problemer
Java
// Java program to Count the Occurrence> // of numbers using Hashmap> import> java.util.*;> > class> HelloWorld {> >public> static> void> main(String[] args)> >{> >int> a[] = {>1>,>13>,>4>,>1>,>41>,>31>,>31>,>4>,>13>,>2> };> > >// put all elements in arraylist> >ArrayList aa =>new> ArrayList();> >for> (>int> i =>0>; i aa.add(a[i]); } HashMap h = new HashMap(); // counting occurrence of numbers for (int i = 0; i h.putIfAbsent(aa.get(i), Collections.frequency( aa, aa.get(i))); } System.out.println(h); } }> |
>
>Produksjon
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Vanlige spørsmål i Java Map Interface
Q1. Hva er et kartgrensesnitt i Java?
Svar:
Kartet inneholder nøkkel-verdi-par, hvor vi får tilgang til elementer i kartet ved hjelp av nøkkelverdier.
Q2. Hva er typene kartgrensesnitt i Java?
Svar:
Det er 3 kartgrensesnittimplementeringer HashMap, LinkedHashMap og TreeMap.