logo

Kortgrænseflade i Java

I Java er Map Interface til stede i java.util-pakken repræsenterer en mapping mellem en nøgle og en værdi. Java Map-grænsefladen er ikke en undertype af Samling grænseflade . Derfor opfører den sig lidt anderledes end resten af ​​samlingstyperne. Et kort indeholder unikke nøgler.

Nørder burde brainstormeren have været hvorfor og hvornår man skal bruge Maps.

Kort er perfekte at bruge til kortlægning af nøgleværdiforeninger, såsom ordbøger. Kortene bruges til at udføre opslag ved hjælp af nøgler, eller når nogen ønsker at hente og opdatere elementer ved hjælp af nøgler. Nogle almindelige scenarier er som følger:



  • Et kort over fejlkoder og deres beskrivelser.
  • Et kort over postnumre og byer.
  • Et kort over ledere og medarbejdere. Hver leder (nøgle) er tilknyttet en liste over medarbejdere (værdi), han leder.
  • Et kort over klasser og elever. Hver klasse (nøgle) er tilknyttet en liste over elever (værdi).

Kortgrænseflade i Java

Oprettelse af kortobjekter

Da Map er en interface , kan der ikke oprettes objekter af typen kort. Vi har altid brug for en klasse, der udvider dette kort for at skabe et objekt. Og også efter introduktionen af Generiske lægemidler i Java 1.5 er det muligt at begrænse den type objekt, der kan gemmes i kortet.

Syntaks: Definition af typesikkert kort

Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>

Karakteristika for en kortgrænseflade

  1. Et kort kan ikke indeholde dublerede nøgler, og hver nøgle kan højst knyttes til én værdi. Nogle implementeringer tillader null-nøgle og null-værdier som HashMap og LinkedHashMap, men nogle kan ikke lide Trækort .
  2. Rækkefølgen af ​​et kort afhænger af de specifikke implementeringer. For eksempel, Trækort og LinkedHashMap har forudsigelige ordrer, mens HashMap ikke har.
  3. Der er to grænseflader til implementering af Map i Java. De er Map og SortedMap og tre klasser: HashMap, TreeMap og LinkedHashMap.

Metoder i Java Map Interface

Metode Handling udført
klar() Denne metode bruges i Java Map Interface til at rydde og fjerne alle elementer eller tilknytninger fra en specificeret kortsamling.
indeholder nøgle(objekt) Denne metode bruges i Map Interface i Java til at kontrollere, om en bestemt nøgle er ved at blive tilknyttet kortet eller ej. Det tager nøgleelementet som en parameter og returnerer True, hvis dette element er kortlagt i kortet.
indeholderVærdi(Objekt) Denne metode bruges i kortgrænsefladen til at kontrollere, om en bestemt værdi kortlægges af en enkelt eller mere end én nøgle i kortet. Det tager værdien som en parameter og returnerer True, hvis denne værdi er kortlagt af en af ​​nøglerne i kortet.
entrySet() Denne metode bruges i Map Interface i Java til at skabe et sæt ud af de samme elementer indeholdt i kortet. Det returnerer dybest set en fast visning af kortet, eller vi kan oprette et nyt sæt og gemme kortelementerne i dem.
er lig med (objekt) Denne metode bruges i Java Map Interface til at kontrollere for lighed mellem to kort. Det verificerer, om elementerne i et kort, der er sendt som en parameter, er lig med elementerne på dette kort eller ej.
få (objekt) Denne metode bruges til at hente eller hente værdien kortlagt af en bestemt nøgle nævnt i parameteren. Det returnerer NULL, når kortet ikke indeholder en sådan mapping for nøglen.
hashCode() Denne metode bruges i Map Interface til at generere en hashCode for det givne kort, der indeholder nøgler og værdier.
er tom() Denne metode bruges til at kontrollere, om et kort har nogen indtastning for nøgle- og værdipar. Hvis der ikke findes nogen mapping, returnerer dette sandt.
keySet() Denne metode bruges i Map Interface til at returnere en Set-visning af nøglerne indeholdt i dette kort. Sættet understøttes af kortet, så ændringer af kortet afspejles i sættet og omvendt.
put (objekt, objekt) Denne metode bruges i Java Map Interface til at knytte den angivne værdi til den angivne nøgle i dette kort.
putAll(Kort) Denne metode bruges i Map Interface i Java til at kopiere alle kortlægninger fra det angivne kort til dette kort.
fjern (objekt) Denne metode bruges i Map Interface til at fjerne kortlægningen for en nøgle fra dette kort, hvis den findes på kortet.
størrelse() Denne metode bruges til at returnere antallet af nøgle/værdi-par, der er tilgængelige på kortet.
værdier() Denne metode bruges i Java Map Interface til at skabe en samling ud af kortets værdier. Det returnerer grundlæggende en samlingsvisning af værdierne i HashMap.
getOrDefault(Objektnøgle, V defaultValue) Returnerer den værdi, som den angivne nøgle er knyttet til, eller standardværdi, hvis dette kort ikke indeholder nogen tilknytning til nøglen.
flet (K-nøgle, V-værdi, BiFunction remappingFunction) Hvis den angivne nøgle ikke allerede er knyttet til en værdi eller er knyttet til null, skal du tilknytte den til den givne ikke-nul værdi.
putIfFraværende(K-nøgle, V-værdi) Hvis den angivne nøgle ikke allerede er knyttet til en værdi (eller er knyttet til null), associerer den med den givne værdi og returnerer null, ellers returnerer den aktuelle associerede værdi.

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

>

>

Produktion:

a:100 b:200 c:300 d:400>

Klasser, der implementerer kortgrænsefladen, er afbildet i nedenstående medier og beskrevet senere som følger:

split af streng java

Kort interface

1. HashMap

HashMap er en del af Javas samling siden Java 1.2. Det giver den grundlæggende implementering af kortgrænsefladen til Java. Den gemmer dataene i (nøgle, værdi) par. For at få adgang til en værdi skal man kende dens nøgle. Denne klasse bruger en teknik kaldet 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());> >}> }>

>

>

Produktion

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap er ligesom HashMap med den ekstra funktion at opretholde en rækkefølge af elementer indsat i den. HashMap gav fordelen ved hurtig indsættelse, søgning og sletning, men det opretholdt aldrig sporet og rækkefølgen for indsættelse, som LinkedHashMap giver, hvor elementerne kan tilgås i deres indsættelsesrækkefølge. Lad os se, hvordan du opretter et kortobjekt ved hjælp af denne klasse.

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

>

>

Produktion

vishal 10 sachin 30 vaibhav 20>

3. Trækort

Det TreeMap i Java bruges til at implementere kortgrænsefladen og NavigableMap sammen med den abstrakte klasse. Kortet er sorteret efter den naturlige rækkefølge af dets nøgler eller af en komparator, der leveres på tidspunktet for oprettelse af kortet, afhængigt af hvilken konstruktør der bruges. Dette viser sig at være en effektiv måde at sortere og opbevare nøgleværdi-parrene på. Lagringsrækkefølgen, der vedligeholdes af trækortet, skal være i overensstemmelse med ligeværdige, ligesom ethvert andet sorteret kort, uanset de eksplicitte komparatorer. Lad os se, hvordan du opretter et kortobjekt ved hjælp af denne klasse.

Eksempel

Java

vært linux




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

binært søgetræ
>

>

Produktion

sachin 30 vaibhav 20 vishal 10>

Udførelse af operationer ved hjælp af Kortgrænseflade og HashMap klasse

Da Map er en grænseflade, kan den kun bruges med en klasse, der implementerer denne grænseflade. Lad os nu se, hvordan du udfører et par ofte brugte operationer på et kort ved at bruge det meget brugte HashMap klasse . Og også efter introduktionen af Generiske lægemidler i Java 1.5 er det muligt at begrænse den type objekt, der kan gemmes på kortet.

1. Tilføjelse af elementer

For at tilføje et element til kortet kan vi bruge put() metoden . Indsættelsesrækkefølgen bibeholdes dog ikke i hashkortet. Internt genereres der for hvert element en separat hash, og elementerne indekseres baseret på denne hash for at gøre den mere 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);> >}> }>

>

>

Produktion

{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}>

2. Ændring af element

Efter tilføjelse af elementerne, hvis vi ønsker at ændre elementet, kan det gøres ved igen at tilføje elementet med put() metoden. Da elementerne i kortet er indekseret ved hjælp af tasterne, kan værdien af ​​nøglen ændres ved blot at indsætte den opdaterede værdi for den nøgle, som vi ønsker at ændre.

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

>

r in c programmering
>

Produktion

Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. Fjernelse af elementer

For at fjerne et element fra kortet kan vi bruge metoden remove() . Denne metode tager nøgleværdien og fjerner tilknytningen for en nøgle fra dette kort, hvis den er til stede på kortet.

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

>

>

Produktion

{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}>

4. Iteration gennem kortet

Der er flere måder at gentage kortet på. Den mest berømte måde er at bruge en for-hver-løkke og få nøglerne. Værdien af ​​nøglen findes ved at bruge 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);> >}> >}> }>

sortere en arraylist i java

>

>

Produktion

1 : Geeks 2 : For 3 : Geeks>

5. Tæl forekomsten af ​​tal ved hjælp af Hashmap

I denne kode bruger vi putIfFraværende( ) sammen med Collections.frequency() at tælle den nøjagtige forekomst af tal. I mange programmer skal du tælle forekomsten af ​​et bestemt tal eller bogstav. Du bruger følgende tilgang til at løse den slags 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); } }>

>

>

Produktion

{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}>

Ofte stillede spørgsmål i Java Map Interface

Q1. Hvad er en kortgrænseflade i Java?

Svar:

Kortet indeholder nøgle-værdi-par, hvor vi tilgår elementer i kortet ved hjælp af nøgleværdier.

Q2. Hvad er typerne af kortgrænseflader i Java?

Svar:

Der er 3 kortgrænsefladeimplementeringer HashMap, LinkedHashMap og TreeMap.