La interfaz Map presente en el paquete java.util representa un mapeo entre una clave y un valor. La interfaz Mapa no es un subtipo de la interfaz Colección. Por tanto, se comporta un poco diferente al resto de tipos de colección. Un mapa contiene claves únicas.
Ejemplo:
|
a:100 b:200 c:300 d:400
Realización de varias operaciones usando Interfaz de mapa y Clase HashMap
Dado que Map es una interfaz, solo se puede usar con una clase que implemente esta interfaz. Ahora, veamos cómo realizar algunas operaciones de uso frecuente en un mapa utilizando la clase HashMap ampliamente utilizada. Y también, después de 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 de 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.
|
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks}
2. Elementos cambiantes: Luego de agregar los elementos si deseamos cambiar el elemento, se puede hacer agregando nuevamente el elemento con el método put (). Dado que los elementos en el mapa se indexan usando las claves, el valor de la clave se puede cambiar simplemente insertando el valor actualizado para la clave que deseamos cambiar.
|
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}
3. Eliminar elemento: Para eliminar un elemento del mapa, podemos usar 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.
|
{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 iterar a través del mapa. La forma más famosa es usar un bucle for-each y obtener las claves. El valor de la clave se encuentra utilizando el método getValue ().
|
1 : Geeks 2 : For 3 : Geeks
Características de una interfaz de mapa
- Un mapa no puede contener claves duplicadas y cada clave se puede asignar como máximo a un valor. Algunas implementaciones permiten una clave nula y un valor nulo como HashMap y LinkedHashMap, pero a algunas no les gusta TreeMap.
- El orden de un mapa depende de las implementaciones específicas. Por ejemplo, TreeMap y LinkedHashMap tienen un orden predecible, mientras que HashMap no.
- Hay dos interfaces para implementar Map en java. Son, Map y SortedMap, y tres clases: HashMap, TreeMap y LinkedHashMap.
¿Por qué y cuándo utilizar Maps?
Los mapas son perfectos para usar en el mapeo de asociaciones de valores clave, como los diccionarios. Los mapas se utilizan para realizar búsquedas por claves o cuando alguien quiere recuperar y actualizar elementos por claves. Algunos ejemplos son:
- Un mapa de códigos de error y sus descripciones.
- Un mapa de códigos postales y ciudades.
- Un mapa de gerentes y empleados. Cada gerente (clave) está asociado con una lista de empleados (valor) que administra.
- Un mapa de clases y estudiantes. Cada clase (clave) está asociada con una lista de estudiantes (valor).
Crear objetos de mapa
Dado que Map es una interfaz, no se pueden crear objetos del tipo map. Siempre necesitamos una clase que amplíe este mapa para crear un objeto. Y también, después de la introducción de Genéricos en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en el Mapa. Este mapa con seguridad de tipos se puede definir como:
// Obj es el tipo de objeto que se almacenará en Map
Mapahm = nuevo HashMap ();
Clases que implementan la interfaz Map
1. HashMap: 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 hay que conocer su clave. Esta clase usa una técnica llamada Hashing. El hash es una técnica para convertir una cadena grande en una cadena pequeña que representa la misma cadena. Un valor más corto ayuda a indexar y a realizar búsquedas más rápidas. Veamos cómo crear un objeto de mapa usando esta clase.
|
vaibhav 20 vishal 10 sachin 30
2. LinkedHashMap: LinkedHashMap es como HashMap con la característica adicional de mantener un orden de elementos insertados en él. HashMap proporcionó la ventaja de una rápida inserción, búsqueda y eliminación, pero nunca mantuvo el seguimiento y el orden de inserción que proporciona el 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.
|
vishal 10 sachin 30 vaibhav 20
3. TreeMap: TreeMap 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. Esto 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 coherente con iguales como cualquier otro mapa ordenado, independientemente de los comparadores explícitos. Veamos cómo crear un objeto de mapa usando esta clase.
|
sachin 30 vaibhav 20 vishal 10