In Java is Map Interface aanwezig in het java.util-pakket en vertegenwoordigt een toewijzing tussen een sleutel en een waarde. De Java Map-interface is geen subtype van de Verzamelinterface . Daarom gedraagt het zich iets anders dan de rest van de verzamelingstypen. Een kaart bevat unieke sleutels.
Geeks, de brainstormer had dat moeten zijn waarom en wanneer Maps gebruiken.
Kaarten zijn perfect om te gebruiken voor het in kaart brengen van sleutel-waarde-associaties, zoals woordenboeken. De kaarten worden gebruikt om zoekopdrachten uit te voeren met behulp van sleutels of wanneer iemand elementen met sleutels wil ophalen en bijwerken. Enkele veel voorkomende scenario's zijn als volgt:
- Een kaart met foutcodes en hun beschrijvingen.
- Een kaart met postcodes en steden.
- Een kaart van managers en medewerkers. Elke manager (sleutel) is gekoppeld aan een lijst met medewerkers (waarde) die hij beheert.
- Een kaart met klassen en studenten. Elke klas (sleutel) is gekoppeld aan een lijst met studenten (waarde).

Kaartobjecten maken
Omdat Map een koppel , kunnen geen objecten van het type kaart worden gemaakt. We hebben altijd een klasse nodig die deze kaart uitbreidt om een object te maken. En ook, na de introductie van Merkloos product in Java 1.5 is het mogelijk om het type object dat in de kaart kan worden opgeslagen te beperken.
Syntaxis: Typeveilige kaart definiëren
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Kenmerken van een kaartinterface
- Een kaart kan geen dubbele sleutels bevatten en elke sleutel kan aan maximaal één waarde worden toegewezen. Sommige implementaties staan null-sleutel- en null-waarden toe, zoals HashMap en LinkedHashMap , maar sommige houden niet van de Boomkaart .
- De volgorde van een kaart is afhankelijk van de specifieke implementaties. Bijvoorbeeld, Boomkaart en LinkedHashMap hebben voorspelbare orders, terwijl HashMap dat niet doet.
- Er zijn twee interfaces voor het implementeren van Map in Java. Het zijn Map en SortedMap en drie klassen: HashMap, TreeMap en LinkedHashMap.
Methoden in Java Map Interface
| Methode | Actie uitgevoerd |
|---|---|
| duidelijk() | Deze methode wordt in Java Map Interface gebruikt om alle elementen of toewijzingen uit een opgegeven kaartverzameling te wissen en te verwijderen. |
| bevatSleutel(Object) | Deze methode wordt in Map Interface in Java gebruikt om te controleren of een bepaalde sleutel in de kaart wordt weergegeven of niet. Het neemt het sleutelelement als parameter en retourneert True als dat element op de kaart is toegewezen. |
| bevatWaarde(Object) | Deze methode wordt in Map Interface gebruikt om te controleren of een bepaalde waarde wordt toegewezen door een enkele of meer dan één sleutel in de kaart. Het neemt de waarde als parameter en retourneert True als die waarde wordt toegewezen door een van de sleutels in de kaart. |
| entrySet() | Deze methode wordt in Map Interface in Java gebruikt om een set te maken van dezelfde elementen in de kaart. Het retourneert in feite een vaste weergave van de kaart, of we kunnen een nieuwe set maken en de kaartelementen daarin opslaan. |
| is gelijk aan(Object) | Deze methode wordt in Java Map Interface gebruikt om de gelijkheid tussen twee kaarten te controleren. Het verifieert of de elementen van één kaart die als parameter worden doorgegeven, gelijk zijn aan de elementen van deze kaart of niet. |
| krijgen(Object) | Deze methode wordt gebruikt om de waarde op te halen of op te halen die is toegewezen door een bepaalde sleutel die in de parameter wordt vermeld. Het retourneert NULL als de kaart geen dergelijke toewijzing voor de sleutel bevat. |
| hashCode() | Deze methode wordt in Map Interface gebruikt om een hashCode te genereren voor de gegeven kaart die sleutels en waarden bevat. |
| is leeg() | Deze methode wordt gebruikt om te controleren of een kaart invoer bevat voor sleutel- en waardeparen. Als er geen toewijzing bestaat, retourneert dit waar. |
| sleutelbos() | Deze methode wordt in Map Interface gebruikt om een Set-weergave te retourneren van de sleutels op deze kaart. De set wordt ondersteund door de kaart, dus wijzigingen in de kaart worden weerspiegeld in de set, en omgekeerd. |
| zet(Object,Object) | Deze methode wordt in Java Map Interface gebruikt om de opgegeven waarde te koppelen aan de opgegeven sleutel in deze kaart. |
| zetAlles(Kaart) | Deze methode wordt gebruikt in Map Interface in Java om alle toewijzingen van de opgegeven kaart naar deze kaart te kopiëren. |
| verwijder(Object) | Deze methode wordt in Map Interface gebruikt om de toewijzing voor een sleutel van deze kaart te verwijderen als deze op de kaart aanwezig is. |
| maat() | Deze methode wordt gebruikt om het aantal sleutel/waarde-paren te retourneren dat beschikbaar is op de kaart. |
| waarden() | Deze methode wordt in Java Map Interface gebruikt om een verzameling te maken op basis van de waarden van de kaart. Het retourneert in feite een verzamelingsweergave van de waarden in de HashMap. |
| getOrDefault(Objectsleutel, V standaardwaarde) | Retourneert de waarde waaraan de opgegeven sleutel is toegewezen, of defaultValue als deze toewijzing geen toewijzing voor de sleutel bevat. |
| merge(K-sleutel, V-waarde, BiFunction remappingFunction) | Als de opgegeven sleutel nog niet aan een waarde is gekoppeld of aan null is gekoppeld, koppelt u deze aan de opgegeven niet-null-waarde. |
| putIfAbsent(K-sleutel, V-waarde) | Als de opgegeven sleutel nog niet aan een waarde is gekoppeld (of aan null is toegewezen), wordt deze aan de opgegeven waarde gekoppeld en null geretourneerd, anders wordt de huidige bijbehorende waarde geretourneerd. |
Voorbeeld:
Java
python __naam__
// 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());> >}> >}> }> |
>
>Uitgang:
a:100 b:200 c:300 d:400>
Klassen die de kaartinterface implementeren, worden in de onderstaande media weergegeven en later als volgt beschreven:

1. HashMap
Hash kaart maakt sinds Java 1.2 deel uit van de Java-collectie. Het biedt de basisimplementatie van de kaartinterface van Java. Het slaat de gegevens op in (sleutel, waarde) paren. Om toegang te krijgen tot een waarde moet men de sleutel ervan kennen. Deze klasse gebruikt een techniek genaamd 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());> >}> }> |
>
>Uitvoer
vaibhav 20 vishal 10 sachin 30>
2. GelinkteHashMap
LinkedHashMap is net als HashMap met de extra functie om de volgorde van de ingevoegde elementen te behouden. HashMap bood het voordeel van snel invoegen, zoeken en verwijderen, maar het behield nooit het spoor en de volgorde van invoeging die de LinkedHashMap biedt, waar de elementen toegankelijk zijn in hun invoegvolgorde. Laten we eens kijken hoe we met deze klasse een kaartobject kunnen maken.
Voorbeeld
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());> >}> }> |
>
>Uitvoer
vishal 10 sachin 30 vaibhav 20>
3. Boomkaart
De Boomkaart in Java wordt gebruikt om de kaartinterface en NavigableMap samen met de abstracte klasse te implementeren. De kaart wordt gesorteerd op basis van de natuurlijke volgorde van de sleutels, of door een vergelijker die wordt verstrekt tijdens het maken van de kaart, afhankelijk van welke constructor wordt gebruikt. Dit blijkt een efficiënte manier te zijn om de sleutel-waardeparen te sorteren en op te slaan. De opslagvolgorde die door de boomkaart wordt aangehouden, moet consistent zijn met gelijken, net als elke andere gesorteerde kaart, ongeacht de expliciete vergelijkers. Laten we eens kijken hoe we met deze klasse een kaartobject kunnen maken.
Voorbeeld
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());> >}> }> |
>
>Uitvoer
sachin 30 vaibhav 20 vishal 10>
Bewerkingen uitvoeren met behulp van Kaartinterface En HashMap-klasse
Omdat Map een interface is, kan deze alleen worden gebruikt met een klasse die deze interface implementeert. Laten we nu eens kijken hoe we een aantal veelgebruikte bewerkingen op een kaart kunnen uitvoeren met behulp van de veelgebruikte HashMap-klasse . En ook, na de introductie van Merkloos product in Java 1.5 is het mogelijk om het type object dat op de kaart kan worden opgeslagen te beperken.
1. Elementen toevoegen
Om een element aan de kaart toe te voegen, kunnen we de put() methode gebruiken. De invoegvolgorde blijft echter niet behouden in de hashmap. Intern wordt voor elk element een aparte hash gegenereerd en op basis van deze hash worden de elementen geïndexeerd om het efficiënter te maken.
Voorbeeld
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);> >}> }> |
>
>Uitvoer
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Veranderend element
Als we na het toevoegen van de elementen het element willen wijzigen, kan dit worden gedaan door het element opnieuw toe te voegen met de put() methode. Omdat de elementen op de kaart worden geïndexeerd met behulp van de sleutels, kan de waarde van de sleutel worden gewijzigd door eenvoudigweg de bijgewerkte waarde in te voeren voor de sleutel waarvoor we deze willen wijzigen.
Voorbeeld
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);> >}> }> |
>
>Uitvoer
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Elementen verwijderen
Om een element uit de kaart te verwijderen, kunnen we de remove() methode gebruiken. Deze methode neemt de sleutelwaarde en verwijdert de toewijzing voor een sleutel uit deze kaart als deze aanwezig is op de kaart.
Voorbeeld
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);> >}> }> |
>
>Uitvoer
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Itereren door de kaart
Er zijn meerdere manieren om door de kaart te bladeren. De bekendste manier is om een for-each-lus te gebruiken en de sleutels te verkrijgen. De waarde van de sleutel wordt gevonden met behulp van de getValue() -methode.
Voorbeeld
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);> >}> >}> }> |
>
generiekheid in Java
>Uitvoer
1 : Geeks 2 : For 3 : Geeks>
5. Tel het voorkomen van getallen met Hashmap
In deze code gebruiken we putIfAbsent( ) samen met Collecties.frequentie() om het exacte voorkomen van getallen te tellen. In veel programma's moet u het voorkomen van een bepaald cijfer of een bepaalde letter tellen. U gebruikt de volgende aanpak om dit soort problemen op te lossen
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); } }> |
>
>Uitvoer
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Veelgestelde vragen in Java Map Interface
Q1. Wat is een kaartinterface in Java?
Antwoord:
De kaart bevat sleutel-waardeparen, waarbij we elementen op de kaart benaderen met behulp van sleutelwaarden.
Vraag 2. Wat zijn de soorten kaartinterfaces in Java?
Antwoord:
Er zijn 3 kaartinterface-implementaties HashMap, LinkedHashMap en TreeMap.