Formación informática

Java | Joomla | MySQL

Curso de Java - Tema 26.5: HashMap

Colección de libros antiguos

¿Qué es?

El HashMap es uno de los objetos más utilizados en Java que implementa la interface Map. Es un conjunto de clave-valores pero sin garantizar la ordenación. Usa un valor especial denominado código de tipo hash para recuperar de forma rápida y eficiente los valores almacenados en él, permitiendo la creación de múltiples “columnas”.

En este objeto se puede guardar cualquier tipo de dato primitivo u objeto, asignándole una clave para poder recuperar más tarde ese objeto mediante la clave definida. Cada objeto se identifica mediante algún identificador apropiado, por ejemplo un código de factura, un Documento Nacional de Identidad…

El nombre HASH, hace referencia a una técnica de organización de archivos llamada hashing o dispersión en el cual se almacenan registros en una dirección del archivo que es generada por una función que se aplica sobre la llave del registro. El concepto en JAVA es similar, el HASHMAP posee un espacio de memoria, y cuando se guarda un objeto allí, se determina su dirección aplicándole una función a la llave que le indicamos.

¿Para qué se usa?

EL HashMap tiene un constructor sin parámetros new HashMap. El uso más habitual es para agrupar diferente información en un único objeto y recuperarla más tarde. Imagínate por ejemplo, que tienes que pasar en un solo objeto, los datos de una persona, como el número de teléfono, el nombre y la dirección. La forma correcta de hacer esto, seria creando un objeto Persona con estos atributos, pero si por algún motivo no puedes hacerlo, o no vale la pena hacerlo porque la información que vas a guardar no tiene sentido estar en un objeto, puedes usar un HashMap usando como clave, por ejemplo, el teléfono.

Declaración y métodos

Para poder usar este tipo de objeto en una clase hay que importar la clase que lo implementa:

import java.util.HashMap;

La sintaxis genérica para declarar es:

HashMap <Clave, Valor> nombreHashMap = new HashMap <> ();

Los métodos más usados y su función son:

Método

Función

nombreMap.size()

Devuelve el número de elementos del Map.

nombreMap.isEmpty()

Devuelve true si no hay elementos en el Map y false si sí los hay.

nombreMap.put(K clave, V valor)

Añade un elemento al Map.

nombreMap.get(K clave)

Devuelve el valor de la clave que se le pasa como parámetro o 'null' si la clave no existe.

nombreMap.clear();

Borra todos los componentes del Map.

nombreMap.remove(K clave)

Borra el par clave/valor de la clave que se le pasa como parámetro.

nombreMap.containsKey(K clave)

Devuelve true si en el map hay una clave que coincide con K.

nombreMap.containsValue(V valor)

Devuelve true si en el map hay un Valor que coincide con V.

nombreMap.values()

Devuelve una "Collection" con los valores del Map.

Un ejemplo completo es el siguiente código en el cuál se usa un HashMap para almacenar en memoria los datos de la plantilla de la mítica Jugoplastika Split:

/**
* Aplicación para probar el funcionamiento de un HashMap
*/
package principal;

//Clases importadas
import java.util.Scanner;
import java.util.HashMap;

/**
* @author José María Torres Corral
*/
public class Main {

public static void main(String[] args) {
//Creamos el objeto
HashMap<integer, string=""> jugadores = new HashMap<integer, string="">();

//Introducimos información
jugadores.put(1, "Bozidar Maljkovic");
jugadores.put(4, "Zoran Sretenovic");
jugadores.put(5, "Velimir Perasovic");
jugadores.put(6, "Luka Doncic");
jugadores.put(7, "Toni Kukoc");
jugadores.put(8, "Goran Sobin");
jugadores.put(9, "Teo Cizmic");
jugadores.put(10, "Ivica Buric");
jugadores.put(11, "Zan Tabak");
jugadores.put(12, "Dusko Ivanonic");
jugadores.put(13, "Pasko Tomic");
jugadores.put(14, "Dino Radja");
jugadores.put(15, "Petar Vucica");

//Mostramos todos los elementos almacenados
System.out.println("Jugadores: " + jugadores.values());

//Mostramos el número de elementos que almacena
System.out.println("Tiene almacenado " + jugadores.size() + " elementos.");

//Mostramos el contenido con un for each
for (HashMap.Entry<integer, string=""> contador : jugadores.entrySet()) {
System.out.println("Clave: " + contador.getKey() + " -> Valor: " + contador.getValue());
}

//Eliminamos el jugador 6 y mostramos los cambios
jugadores.remove(6);
System.out.println("Jugadores: " + jugadores.values());

//Introducimos el nuevo jugador
jugadores.put(6, "Luka Pavicevic");
System.out.println("Jugadores: " + jugadores.values());

//Mostramos el contenido con un for each
for (HashMap.Entry<integer, string=""> contador : jugadores.entrySet()) {
System.out.println("Clave: " + contador.getKey() + " -> Valor: " + contador.getValue());
}

}

}

Curso de Java - Tema 26.4: ArrayList | Curso de Java - Tema 27: tratamiento de excepciones
Curso de Java - Índice Ejercicios Nivel Medio

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información