En Java, la interfaz de mapa está presente en el paquete java.util y representa una asignación entre una clave y un valor. La interfaz Java Map no es un subtipo de Interfaz de colección . Por lo tanto se comporta un poco diferente al resto de tipos de colección. Un mapa contiene claves únicas.
Geeks, la lluvia de ideas debería haber sido por qué y cuándo usar Maps.
Los mapas son perfectos para usar en el mapeo de asociaciones de valores clave, como diccionarios. Los mapas se utilizan para realizar búsquedas por claves o cuando alguien quiere recuperar y actualizar elementos por claves. Algunos escenarios comunes son los siguientes:
- Un mapa de códigos de error y sus descripciones.
- Un mapa de códigos postales y ciudades.
- Un mapa de directivos y empleados. Cada gerente (clave) está asociado a una lista de empleados (valor) que administra.
- Un mapa de clases y estudiantes. Cada clase (clave) está asociada a una lista de estudiantes (valor).

Crear objetos de mapa
Dado que Map es un interfaz , no se pueden crear objetos del tipo mapa. Siempre necesitamos una clase que extienda este mapa para poder crear un objeto. Y también, tras la introducción de Genéricos en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en el mapa.
Sintaxis: Definición de mapa de tipo seguro
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map>
Características de una interfaz de mapa
- Un mapa no puede contener claves duplicadas y cada clave puede asignarse como máximo a un valor. Algunas implementaciones permiten claves nulas y valores nulos como HashMap y LinkedHashMap, pero a otras no les gusta ÁrbolMapa .
- El orden de un mapa depende de las implementaciones específicas. Por ejemplo, ÁrbolMapa y LinkedHashMap tienen órdenes predecibles, mientras que HashMap no.
- Hay dos interfaces para implementar Map en Java. Son Map y SortedMap, y tres clases: HashMap, TreeMap y LinkedHashMap.
Métodos en la interfaz de mapas de Java
| Método | Acción realizada |
|---|---|
| claro() | Este método se utiliza en Java Map Interface para borrar y eliminar todos los elementos o asignaciones de una colección de mapas especificada. |
| contiene clave (objeto) | Este método se utiliza en Map Interface en Java para verificar si una clave en particular se está asignando al mapa o no. Toma el elemento clave como parámetro y devuelve True si ese elemento está asignado en el mapa. |
| contieneValor(Objeto) | Este método se utiliza en la interfaz del mapa para verificar si un valor particular está siendo asignado por una o más de una clave en el mapa. Toma el valor como parámetro y devuelve True si ese valor está asignado por cualquiera de las claves en el mapa. |
| conjunto de entrada() | Este método se utiliza en Map Interface en Java para crear un conjunto de los mismos elementos contenidos en el mapa. Básicamente, devuelve una vista establecida del mapa o podemos crear un nuevo conjunto y almacenar los elementos del mapa en él. |
| es igual (objeto) | Este método se utiliza en Java Map Interface para comprobar la igualdad entre dos mapas. Verifica si los elementos de un mapa pasado como parámetro son iguales a los elementos de este mapa o no. |
| obtener (objeto) | Este método se utiliza para recuperar o buscar el valor asignado por una clave particular mencionada en el parámetro. Devuelve NULL cuando el mapa no contiene dicho mapeo para la clave. |
| código hash() | Este método se utiliza en Map Interface para generar un código hash para el mapa dado que contiene claves y valores. |
| esta vacio() | Este método se utiliza para comprobar si un mapa tiene alguna entrada para pares de clave y valor. Si no existe ninguna asignación, esto devuelve verdadero. |
| juego de llaves() | Este método se utiliza en la interfaz del mapa para devolver una vista de conjunto de las claves contenidas en este mapa. El conjunto está respaldado por el mapa, por lo que los cambios realizados en el mapa se reflejan en el conjunto y viceversa. |
| poner(Objeto, Objeto) | Este método se utiliza en Java Map Interface para asociar el valor especificado con la clave especificada en este mapa. |
| poner todo (mapa) | Este método se utiliza en Map Interface en Java para copiar todas las asignaciones del mapa especificado a este mapa. |
| eliminar (objeto) | Este método se utiliza en Map Interface para eliminar la asignación de una clave de este mapa si está presente en el mapa. |
| tamaño() | Este método se utiliza para devolver el número de pares clave/valor disponibles en el mapa. |
| valores() | Este método se utiliza en Java Map Interface para crear una colección a partir de los valores del mapa. Básicamente, devuelve una vista de Colección de los valores en HashMap. |
| getOrDefault(Clave de objeto, V valor predeterminado) | Devuelve el valor al que está asignada la clave especificada, o defaultValue si esta asignación no contiene ninguna asignación para la clave. |
| fusionar (tecla K, valor V, función de reasignación BiFunction) | Si la clave especificada aún no está asociada con un valor o está asociada con un valor nulo, asóciela con el valor no nulo dado. |
| putIfAbsent (tecla K, valor V) | Si la clave especificada aún no está asociada con un valor (o está asignada a nulo), la asocia con el valor dado y devuelve nulo; de lo contrario, devuelve el valor asociado actual. |
Ejemplo:
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());> >}> >}> }> |
>
>Producción:
a:100 b:200 c:300 d:400>
Las clases que implementan la interfaz Map se describen en los siguientes medios y se describen más adelante de la siguiente manera:

1. Mapa Hash
HashMap es parte de la colección de Java desde Java 1.2. Proporciona la implementación básica de la interfaz Map de Java. Almacena los datos en pares (clave, valor). Para acceder a un valor es necesario conocer su clave. Esta clase utiliza una técnica llamada Java.
convertir un objeto java a json
// 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());> >}> }> |
>
>Producción
vaibhav 20 vishal 10 sachin 30>
2. LinkedHashMap
LinkedHashMap es como HashMap con la característica adicional de mantener el orden de los elementos insertados en él. HashMap proporcionó la ventaja de una inserción, búsqueda y eliminación rápidas, pero nunca mantuvo el seguimiento y el orden de inserción que proporciona LinkedHashMap donde se puede acceder a los elementos en su orden de inserción. Veamos cómo crear un objeto de mapa usando esta clase.
Ejemplo
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());> >}> }> |
>
>Producción
vishal 10 sachin 30 vaibhav 20>
3. Mapa de árbol
El Mapa de árbol en Java se utiliza para implementar la interfaz Map y NavigableMap junto con la clase abstracta. El mapa se ordena según el orden natural de sus claves o mediante un comparador proporcionado en el momento de la creación del mapa, según el constructor que se utilice. Esta demuestra ser una forma eficaz de ordenar y almacenar los pares clave-valor. El orden de almacenamiento mantenido por el mapa de árbol debe ser consistente con iguales como cualquier otro mapa ordenado, independientemente de los comparadores explícitos. Veamos cómo crear un objeto de mapa usando esta clase.
Ejemplo
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());> >}> }> |
>
>Producción
sachin 30 vaibhav 20 vishal 10>
Realizar operaciones utilizando Interfaz de mapa y Clase HashMap
Dado que Map es una interfaz, sólo se puede utilizar con una clase que implemente esta interfaz. Ahora, veamos cómo realizar algunas operaciones de uso frecuente en un mapa usando el ampliamente utilizado Clase HashMap . Y también, tras la introducción de Genéricos en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en el mapa.
1. Agregar elementos
Para agregar un elemento al mapa, podemos usar el método put(). Sin embargo, el orden de inserción no se conserva en el mapa hash. Internamente, para cada elemento, se genera un hash separado y los elementos se indexan en función de este hash para hacerlo más eficiente.
Ejemplo
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);> >}> }> |
>
>Producción
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}> 2. Elemento cambiante
Después de agregar los elementos, si deseamos cambiar el elemento, podemos hacerlo agregando nuevamente el elemento con el método put(). Dado que los elementos del mapa se indexan mediante claves, el valor de la clave se puede cambiar simplemente insertando el valor actualizado de la clave que deseamos cambiar.
Ejemplo
Java
árbol binario en 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);> >}> }> |
>
>Producción
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Eliminación de elementos
Para eliminar un elemento del mapa, podemos utilizar el método remove(). Este método toma el valor de la clave y elimina la asignación de una clave de este mapa si está presente en el mapa.
Ejemplo
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);> >}> }> |
>
>Producción
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks}> 4. Iterando a través del mapa
Hay varias formas de recorrer el mapa. La forma más famosa es utilizar un bucle para cada uno y obtener las claves. El valor de la clave se encuentra utilizando el método getValue().
Ejemplo
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);> >}> >}> }> |
>
>Producción
1 : Geeks 2 : For 3 : Geeks>
5. Cuente la aparición de números usando Hashmap
En este código, estamos usando ponerSiAbsent( ) junto con Colecciones.frecuencia() para contar la aparición exacta de números. En muchos programas, es necesario contar la aparición de un número o letra en particular. Utilice el siguiente enfoque para resolver ese tipo de problemas.
Java
bytes de Python a cadena
// 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); } }> |
>
>Producción
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2}> Preguntas frecuentes sobre la interfaz de mapas de Java
P1. ¿Qué es una interfaz de mapa en Java?
Respuesta:
El mapa contiene pares clave-valor, donde accedemos a los elementos del mapa utilizando valores clave.
P2. ¿Cuáles son los tipos de interfaces de mapas en Java?
Respuesta:
Hay 3 implementaciones de interfaz de mapas: HashMap, LinkedHashMap y TreeMap.