¿Cómo almacenarías los datos de un diccionario? Tenemos por un lado cada palabra y por otro su significado. Para resolver este problema existen precisamente los arrays asociativos. Un tipo de array asociativo son los mapas o diccionarios, que permiten almacenar pares de valores conocidos como clave y valor. La clave se utiliza para acceder al valor, como una entrada de un diccionario permite acceder a su definición.
En Java existe la interfaz java.util.Map
que define los métodos que deben tener los mapas, y existen tres implementaciones principales de dicha interfaz: java.util.HashMap
, java.util.TreeMap
y java.util.LinkedHashMap
. ¿Te suenan? Claro que si. Cada una de ellas, respectivamente, tiene características similares a HashSet
, TreeSet
y LinkedHashSet
, tanto en funcionamiento interno como en rendimiento.
Los mapas utilizan clases genéricas para dar extensibilidad y flexibilidad, y permiten definir un tipo base para la clave, y otro tipo diferente para el valor. Veamos un ejemplo de como crear un mapa, que es extensible a los otros dos tipos de mapas:
HashMap<String,Integer> t=new HashMap<String,Integer>();
El mapa anterior permite usar cadenas como llaves y almacenar de forma asociada a cada llave, un número entero. Veamos los métodos principales de la interfaz Map
, disponibles en todas las implementaciones. En los ejemplos, V
es el tipo base usado para el valor y K
el tipo base usado para la llave:
Método. | Descripción. |
---|---|
|
Inserta un par de objetos llave (key ) y valor (value ) en el mapa. Si la llave ya existe en el mapa, entonces retornará el valor asociado que tenía antes, si la llave no existía, entonces retornará null . |
|
Obtiene el valor asociado a una llave ya almacenada en el mapa. Si no existe la llave, retornará null . |
|
Elimina la llave y el valor asociado. Retorna el valor asociado a la llave, por si lo queremos utilizar para algo, o null , si la llave no existe. |
|
Retornará true si el mapa tiene almacenada la llave pasada por parámetro, false en cualquier otro caso. |
|
Retornará true si el mapa tiene almacenado el valor pasado por parámetro, false en cualquier otro caso. |
|
Retornará el número de pares llave y valor almacenado en el mapa. |
|
Retornará true si el mapa está vacío, false en cualquier otro caso. |
|
Vacía el mapa. |
Es un tipo de arrayque en vez de permitir el acceso por posición numérica, permite el acceso a los elementos almacenados en base a un valor diferente, numérico o no, pero que no hace referencia a su posición, sino al contenido almacenado. Podríamos por ejemplo, almacenar los datos de una persona, y acceder a dichos datos en base a su número de documento de identidad. El número del documento sería la clave que permitiría acceder al resto de la información.