logo

Kartgränssnitt i Java

I Java finns Map Interface i java.util-paketet representerar en mappning mellan en nyckel och ett värde. Java Map-gränssnittet är inte en undertyp av Samlingsgränssnitt . Därför beter den sig lite annorlunda än resten av samlingstyperna. En karta innehåller unika nycklar.

Nördar borde brainstormern ha varit varför och när man ska använda Maps.

Kartor är perfekta att använda för kartläggning av nyckel-värdesassociationer, till exempel ordböcker. Kartorna används för att utföra uppslagningar med nycklar eller när någon vill hämta och uppdatera element med nycklar. Några vanliga scenarier är följande:



  • En karta över felkoder och deras beskrivningar.
  • En karta över postnummer och städer.
  • En karta över chefer och medarbetare. Varje chef (nyckel) är associerad med en lista över anställda (värde) han leder.
  • En karta över klasser och elever. Varje klass (nyckel) är associerad med en lista över elever (värde).

Kartgränssnitt i Java

Skapa kartobjekt

Eftersom Map är en gränssnitt , objekt kan inte skapas av typen karta. Vi behöver alltid en klass som utökar den här kartan för att kunna skapa ett objekt. Och även efter införandet av Generika i Java 1.5 är det möjligt att begränsa vilken typ av objekt som kan lagras i kartan.

Syntax: Definiera typsäker karta

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

Karakteristika för ett kartgränssnitt

  1. En karta kan inte innehålla dubbletter av nycklar och varje nyckel kan mappas till högst ett värde. Vissa implementeringar tillåter null-nyckel- och null-värden som HashMap och LinkedHashMap, men vissa gillar inte Trädkarta .
  2. Ordningen på en karta beror på de specifika implementeringarna. Till exempel, Trädkarta och LinkedHashMap har förutsägbara order, medan HashMap inte har det.
  3. Det finns två gränssnitt för att implementera Map i Java. De är Map och SortedMap och tre klasser: HashMap, TreeMap och LinkedHashMap.

Metoder i Java Map Interface

Metod Åtgärd utförd
klar() Den här metoden används i Java Map Interface för att rensa och ta bort alla element eller mappningar från en specificerad kartsamling.
innehåller nyckel(objekt) Denna metod används i Map Interface i Java för att kontrollera om en viss nyckel mappas till kartan eller inte. Det tar nyckelelementet som en parameter och returnerar True om det elementet är mappat i kartan.
innehållerValue(Objekt) Den här metoden används i kartgränssnittet för att kontrollera om ett visst värde mappas av en enda eller mer än en nyckel i kartan. Det tar värdet som en parameter och returnerar True om det värdet mappas av någon av nycklarna i kartan.
entrySet() Denna metod används i Map Interface i Java för att skapa en uppsättning av samma element som finns i kartan. Det returnerar i princip en fast vy av kartan eller så kan vi skapa en ny uppsättning och lagra kartelementen i dem.
lika (Objekt) Denna metod används i Java Map Interface för att kontrollera likheten mellan två kartor. Den verifierar om elementen i en karta som skickas som en parameter är lika med elementen i denna karta eller inte.
få (Objekt) Denna metod används för att hämta eller hämta värdet som mappas av en speciell nyckel som nämns i parametern. Den returnerar NULL när kartan inte innehåller någon sådan mappning för nyckeln.
hash-kod() Denna metod används i Map Interface för att generera en hashCode för den givna kartan som innehåller nycklar och värden.
är tom() Denna metod används för att kontrollera om en karta har någon post för nyckel- och värdepar. Om det inte finns någon mappning returnerar detta sant.
keySet() Denna metod används i Map Interface för att returnera en Set-vy av nycklarna som finns i denna karta. Uppsättningen stöds av kartan, så ändringar av kartan återspeglas i uppsättningen och vice versa.
put(Objekt, Objekt) Denna metod används i Java Map Interface för att associera det angivna värdet med den angivna nyckeln i denna karta.
putAll(Map) Denna metod används i Map Interface i Java för att kopiera alla mappningar från den angivna kartan till denna karta.
ta bort (objekt) Denna metod används i Map Interface för att ta bort mappningen för en nyckel från denna karta om den finns på kartan.
storlek() Den här metoden används för att returnera antalet nyckel/värdepar som är tillgängliga i kartan.
värden() Denna metod används i Java Map Interface för att skapa en samling av kartans värden. Det returnerar i princip en samlingsvy av värdena i HashMap.
getOrDefault(Objektnyckel, V defaultValue) Returnerar värdet som den angivna nyckeln är mappad till, eller defaultValue om denna karta inte innehåller någon mappning för nyckeln.
sammanfoga (K-nyckel, V-värde, BiFunction remappingFunction) Om den angivna nyckeln inte redan är associerad med ett värde eller är associerad med null, associera den med det givna icke-nullvärdet.
putIfAbsent(K-nyckel, V-värde) Om den angivna nyckeln inte redan är associerad med ett värde (eller är mappad till null) associerar den med det givna värdet och returnerar null, annars returnerar det aktuella associerade värdet.

Exempel:

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 som implementerar kartgränssnittet avbildas i nedanstående media och beskrivs senare enligt följande:

Kartgränssnitt

1. HashMap

HashMap är en del av Javas samling sedan Java 1.2. Det ger den grundläggande implementeringen av kartgränssnittet för Java. Den lagrar data i (nyckel, värde) par. För att komma åt ett värde måste man känna till dess nyckel. Denna klass använder en teknik som kallas 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());> >}> }>

c++ gui
>

>

Produktion

vaibhav 20 vishal 10 sachin 30>

2. LinkedHashMap

LinkedHashMap är precis som HashMap med den extra funktionen att upprätthålla en ordning av element som infogas i den. HashMap gav fördelen med snabb infogning, sökning och radering men den bibehöll aldrig spåret och infogningsordningen som LinkedHashMap tillhandahåller där elementen kan nås i deras insättningsordning. Låt oss se hur man skapar ett kartobjekt med den här klassen.

Exempel

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ädkarta

De TreeMap i Java används för att implementera kartgränssnittet och NavigableMap tillsammans med den abstrakta klassen. Kartan sorteras enligt den naturliga ordningen för dess nycklar, eller av en komparator som tillhandahålls när kartan skapas, beroende på vilken konstruktor som används. Detta visar sig vara ett effektivt sätt att sortera och lagra nyckel-värdeparen. Lagringsordningen som upprätthålls av trädkartan måste överensstämma med likadana precis som alla andra sorterade kartor, oberoende av de explicita komparatorerna. Låt oss se hur man skapar ett kartobjekt med den här klassen.

Exempel

Java




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

>

>

Produktion

sachin 30 vaibhav 20 vishal 10>

Utföra operationer med hjälp av Kartgränssnitt och HashMap-klass

Eftersom Map är ett gränssnitt kan det endast användas med en klass som implementerar detta gränssnitt. Låt oss nu se hur man utför några ofta använda operationer på en karta med hjälp av de ofta använda HashMap klass . Och även efter införandet av Generika i Java 1.5 är det möjligt att begränsa vilken typ av objekt som kan lagras i kartan.

1. Lägga till element

För att lägga till ett element till kartan kan vi använda put()-metoden . Insättningsordningen behålls dock inte i hashkartan. Internt, för varje element, genereras en separat hash och elementen indexeras baserat på denna hash för att göra den mer effektiv.

Exempel

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. Ändra element

Efter att ha lagt till elementen om vi vill ändra elementet, kan det göras genom att återigen lägga till elementet med put()-metoden. Eftersom elementen i kartan indexeras med hjälp av nycklarna, kan nyckelns värde ändras genom att helt enkelt infoga det uppdaterade värdet för nyckeln som vi vill ändra.

Exempel

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

>

>

Produktion

nyckel för insättning av laptop
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. Ta bort element

För att ta bort ett element från kartan kan vi använda metoden remove() . Denna metod tar nyckelvärdet och tar bort mappningen för en nyckel från denna karta om den finns i kartan.

Exempel

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. Itererar genom kartan

Det finns flera sätt att iterera genom kartan. Det mest kända sättet är att använda en för varje slinga och få nycklarna. Nyckelns värde hittas med metoden getValue().

Exempel

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

>

>

Produktion

1 : Geeks 2 : For 3 : Geeks>

5. Räkna förekomsten av tal med hjälp av Hashmap

I den här koden använder vi putIfAbsent( ) tillsammans med Collections.frequency() för att räkna den exakta förekomsten av siffror. I många program måste du räkna förekomsten av en viss siffra eller bokstav. Du använder följande tillvägagångssätt för att lösa den typen av problem

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

Vanliga frågor i Java Map Interface

Q1. Vad är ett kartgränssnitt i Java?

Svar:

Kartan innehåller nyckel-värdepar, där vi kommer åt element i kartan med hjälp av nyckelvärden.

Q2. Vilka typer av kartgränssnitt finns i Java?

Svar:

Det finns 3 kartgränssnittsimplementeringar HashMap, LinkedHashMap och TreeMap.