A Java, la interfície de mapa està present al paquet java.util que representa un mapeig entre una clau i un valor. La interfície de mapa de Java no és un subtipus de la Interfície de col·lecció . Per tant, es comporta una mica diferent de la resta de tipus de col·lecció. Un mapa conté claus úniques.
Frikis, la pluja d'idees hauria d'haver estat per què i quan utilitzar Maps.
Els mapes són perfectes per utilitzar-los per a l'assignació d'associacions de valor-clau, com ara diccionaris. Els mapes s'utilitzen per fer cerques per claus o quan algú vol recuperar i actualitzar elements per claus. Alguns escenaris habituals són els següents:
- Un mapa de codis d'error i les seves descripcions.
- Un mapa de codis postals i ciutats.
- Un mapa de directius i empleats. Cada director (clau) s'associa a una llista d'empleats (valor) que gestiona.
- Un mapa de classes i alumnes. Cada classe (clau) està associada a una llista d'alumnes (valor).

Creació d'objectes de mapa
Com que Map és un interfície , no es poden crear objectes del tipus mapa. Sempre necessitem una classe que ampliï aquest mapa per crear un objecte. I també, després de la introducció de Genèrics a Java 1.5, és possible restringir el tipus d'objecte que es pot emmagatzemar al mapa.
Sintaxi: Definició de mapa segur de tipus
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Característiques d'una interfície de mapes
- Un mapa no pot contenir claus duplicades i cada clau pot assignar-se com a màxim a un valor. Algunes implementacions permeten clau nul·la i valors nuls com HashMap i LinkedHashMap , però a algunes no els agrada el TreeMap .
- L'ordre d'un mapa depèn de les implementacions específiques. Per exemple, TreeMap i LinkedHashMap tenen comandes previsibles, mentre que HashMap no.
- Hi ha dues interfícies per implementar Map a Java. Són Map i SortedMap , i tres classes: HashMap, TreeMap i LinkedHashMap.
Mètodes a la interfície de mapes de Java
| Mètode | Acció realitzada |
|---|---|
| clar () | Aquest mètode s'utilitza a Java Map Interface per esborrar i eliminar tots els elements o mapes d'una col·lecció de mapes especificada. |
| containsKey(Objecte) | Aquest mètode s'utilitza a la interfície de mapa de Java per comprovar si una clau concreta s'està assignant al mapa o no. Pren l'element clau com a paràmetre i retorna True si aquest element està assignat al mapa. |
| contéValor(Objecte) | Aquest mètode s'utilitza a la interfície del mapa per comprovar si un valor en particular s'està assignant una o més d'una clau al mapa. Pren el valor com a paràmetre i retorna True si aquest valor està assignat per alguna de les claus del mapa. |
| entrySet() | Aquest mètode s'utilitza a Map Interface a Java per crear un conjunt dels mateixos elements continguts al mapa. Bàsicament retorna una vista conjunta del mapa o podem crear un conjunt nou i emmagatzemar-hi els elements del mapa. |
| és igual a (objecte) | Aquest mètode s'utilitza a Java Map Interface per comprovar la igualtat entre dos mapes. Verifica si els elements d'un mapa passat com a paràmetre són iguals o no als elements d'aquest mapa. |
| obtenir (objecte) | Aquest mètode s'utilitza per recuperar o obtenir el valor assignat per una clau concreta esmentada al paràmetre. Retorna NULL quan el mapa no conté aquest mapeig per a la clau. |
| hashCode() | Aquest mètode s'utilitza a la interfície de mapa per generar un codi hash per al mapa donat que conté claus i valors. |
| està buit() | Aquest mètode s'utilitza per comprovar si un mapa té alguna entrada per a parells de clau i valor. Si no existeix cap mapeig, retorna cert. |
| keySet() | Aquest mètode s'utilitza a la interfície del mapa per retornar una vista conjunta de les claus contingudes en aquest mapa. El conjunt està recolzat pel mapa, de manera que els canvis al mapa es reflecteixen al conjunt, i viceversa. |
| posar (objecte, objecte) | Aquest mètode s'utilitza a Java Map Interface per associar el valor especificat amb la clau especificada en aquest mapa. |
| posar-ho tot (mapa) | Aquest mètode s'utilitza a la interfície de mapes de Java per copiar tots els mapes del mapa especificat a aquest mapa. |
| eliminar (objecte) | Aquest mètode s'utilitza a la interfície de mapa per eliminar el mapa d'una clau d'aquest mapa si està present al mapa. |
| mida () | Aquest mètode s'utilitza per retornar el nombre de parells clau/valor disponibles al mapa. |
| valors () | Aquest mètode s'utilitza a Java Map Interface per crear una col·lecció a partir dels valors del mapa. Bàsicament retorna una vista de col·lecció dels valors del HashMap. |
| getOrDefault (clau d'objecte, V defaultValue) | Retorna el valor al qual està assignada la clau especificada, o defaultValue si aquest mapa no conté cap assignació per a la clau. |
| combinar (clau K, valor V, funció de reasignació de BiFunction) | Si la clau especificada encara no està associada amb un valor o està associada amb nul, associa-la amb el valor no nul donat. |
| putIfAbsent (clau K, valor V) | Si la clau especificada encara no està associada amb un valor (o està assignada a null) l'associa amb el valor donat i retorna null, en cas contrari retorna el valor associat actual. |
Exemple:
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());> >}> >}> }> |
>
>Sortida:
a:100 b:200 c:300 d:400>
Les classes que implementen la interfície Map es mostren als mitjans següents i es descriuen més endavant de la següent manera:

1. HashMap
HashMap forma part de la col·lecció de Java des de Java 1.2. Proporciona la implementació bàsica de la interfície Map de Java. Emmagatzema les dades en parells (clau, valor). Per accedir a un valor cal conèixer-ne la clau. Aquesta classe utilitza una tècnica anomenada 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());> >}> }> |
>
>
css canviant la mida de la imatgeSortida
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
LinkedHashMap és com HashMap amb la característica addicional de mantenir un ordre d'elements inserits en ell. HashMap va proporcionar l'avantatge de la inserció, la cerca i la supressió ràpides, però mai no va mantenir la pista i l'ordre d'inserció que proporciona LinkedHashMap on es pot accedir als elements en el seu ordre d'inserció. Vegem com crear un objecte de mapa amb aquesta classe.
Exemple
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());> >}> }> |
>
>Sortida
vishal 10 sachin 30 vaibhav 20>
3. TreeMap
El TreeMap a Java s'utilitza per implementar la interfície Map i NavigableMap juntament amb la classe abstracta. El mapa s'ordena segons l'ordre natural de les seves claus, o mitjançant un comparador proporcionat en el moment de la creació del mapa, segons quin constructor s'utilitzi. Això demostra ser una manera eficient d'ordenar i emmagatzemar els parells clau-valor. L'ordre d'emmagatzematge que manté el mapa d'arbre ha de ser coherent amb els iguals igual que qualsevol altre mapa ordenat, independentment dels comparadors explícits. Vegem com crear un objecte de mapa amb aquesta classe.
Exemple
Java
variable bash
// 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());> >}> }> |
>
>Sortida
sachin 30 vaibhav 20 vishal 10>
Realització d'operacions utilitzant Interfície de mapes i Classe HashMap
Com que Map és una interfície, només es pot utilitzar amb una classe que implementi aquesta interfície. Ara, anem a veure com realitzar algunes operacions d'ús freqüent en un mapa utilitzant l'àmpliament utilitzat Classe HashMap . I també, després de la introducció de Genèrics a Java 1.5, és possible restringir el tipus d'objecte que es pot emmagatzemar al mapa.
1. Afegir Elements
Per afegir un element al mapa, podem utilitzar el mètode put() . Tanmateix, l'ordre d'inserció no es conserva al mapa hash. Internament, per a cada element, es genera un hash independent i els elements s'indexen en funció d'aquest hash per fer-lo més eficient.
Exemple
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);> >}> }> |
>
>Sortida
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Element canviant
Després d'afegir els elements si volem canviar l'element, es pot fer afegint de nou l'element amb el mètode put(). Com que els elements del mapa s'indexen mitjançant les claus, el valor de la clau es pot canviar simplement inserint el valor actualitzat de la clau per a la qual volem canviar.
Exemple
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);> >}> }> |
>
>Sortida
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Eliminació d'elements
Per eliminar un element del mapa, podem utilitzar el mètode remove() . Aquest mètode pren el valor de la clau i elimina l'assignació d'una clau d'aquest mapa si està present al mapa.
Exemple
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);> >}> }> |
invertint la cadena en java
>
>Sortida
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Iterant pel mapa
Hi ha diverses maneres de recórrer el mapa. La manera més famosa és utilitzar un bucle per a cada i obtenir les claus. El valor de la clau es troba mitjançant el mètode getValue().
Exemple
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);> >}> >}> }> |
>
>Sortida
1 : Geeks 2 : For 3 : Geeks>
5. Compteu l'ocurrència de nombres mitjançant Hashmap
En aquest codi, estem utilitzant posarSiAbsent( ) conjuntament amb Collections.frequency() per comptar l'ocurrència exacta dels nombres. En molts programes, cal comptar l'aparició d'un número o lletra en particular. Utilitzeu el següent enfocament per resoldre aquest tipus de problemes
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); } }> |
>
>Sortida
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Preguntes freqüents a la interfície de mapes de Java
Q1. Què és una interfície de mapa a Java?
Resposta:
El mapa conté parells clau-valor, on accedim als elements del mapa mitjançant valors clau.
P2. Quins són els tipus d'interfícies de mapes a Java?
Resposta:
Hi ha 3 implementacions d'interfície de mapes HashMap, LinkedHashMap i TreeMap.