Java HashMap

Java 集合框架Colecciones de Java

HashMap es una tabla hash que almacena asignaciones de pares clave-valor.

HashMap implementa la interfaz Map, almacena datos según el valor HashCode de la clave, tiene una velocidad de acceso muy rápida, permite como máximo una clave null por registro y no admite sincronización de hilos.

HashMap no está ordenado, es decir, no registra el orden de inserción.

HashMap hereda de AbstractMap e implementa las interfaces Map, Cloneable y java.io.Serializable.

Los tipos de key y value en HashMap pueden ser iguales o diferentes; pueden ser key y value de tipo String, o key de tipo Integer y value de tipo String.

Los elementos en HashMap son en realidad objetos; algunos tipos primitivos comunes pueden usar sus clases envolventes.

La tabla de clases envolventes correspondientes a los tipos primitivos es la siguiente:

Tipo primitivoTipo de referencia
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

La clase HashMap se encuentra en el paquete java.util; antes de usarla es necesario importarla. El formato de sintaxis es el siguiente:

import java.util.HashMap; // 引入 HashMap 类

En el siguiente ejemplo creamos un objeto HashMap llamado Sites, con key de tipo Integer y value de tipo String:

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

Agregar elementos

La clase HashMap proporciona muchos métodos útiles; para agregar pares clave-valor se puede usar el método put():

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        System.out.println(Sites);
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

{1=Google, 2=Ejemplo, 3=Taobao, 4=Zhihu}

El siguiente ejemplo crea una key de tipo String y un value de tipo String:

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<String, String> Sites = new HashMap<String, String>();
        // Agregar pares clave-valor
        Sites.put("one", "Google");
        Sites.put("two", "Ejemplo");
        Sites.put("three", "Taobao");
        Sites.put("four", "Zhihu");
        System.out.println(Sites);
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

{four=Zhihu, one=Google, two=Ejemplo, three=Taobao}

Acceder a elementos

Podemos usar el método get(key) para obtener el value correspondiente a la clave:

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        System.out.println(Sites.get(3));
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

Taobao

Eliminar elementos

Podemos usar el método remove(key) para eliminar el par clave-valor correspondiente a la clave:

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        Sites.remove(4);
        System.out.println(Sites);
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

{1=Google, 2=Ejemplo, 3=Taobao}

Para eliminar todos los pares clave-valor se puede usar el método clear:

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        Sites.clear();
        System.out.println(Sites);
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

{}

Calcular el tamaño

Si se desea calcular el número de elementos en un HashMap, se puede usar el método size():

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        System.out.println(Sites.size());
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

4

Iterar sobre HashMap

Se puede usar for-each para iterar sobre los elementos en un HashMap.

Si solo deseas obtener las claves, puedes usar el método keySet(), y luego obtener el value correspondiente mediante get(key). Si solo deseas obtener los values, puedes usar el método values().

Ejemplo

// Importar la clase HashMap
import java.util.HashMap;

public class EjemploTest {
    public static void main(String[] args) {
        // Crear el objeto HashMap Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // Agregar pares clave-valor
        Sites.put(1, "Google");
        Sites.put(2, "Ejemplo");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        // Mostrar key y value
        for (Integer i : Sites.keySet()) {
            System.out.println("key: " + i + " value: " + Sites.get(i));
        }
        // Devolver todos los values
        for(String value: Sites.values()) {
          // Mostrar cada value
          System.out.print(value + ", ");
        }
    }
}

Al ejecutar el código anterior, el resultado es el siguiente:

key: 1 value: Google
key: 2 value: Ejemplo
key: 3 value: Taobao
key: 4 value: Zhihu
Google, Ejemplo, Taobao, Zhihu,

Métodos de Java HashMap

hashmap

La lista de métodos comunes de Java HashMap es la siguiente:

Método Descripción
clear() Elimina todos los pares clave/valor en el hashMap.
clone() Copia un hashMap.
isEmpty() Determina si el hashMap está vacío.
size() Calcula el número de pares clave/valor en el hashMap.
put() Agrega un par clave/valor al hashMap.
putAll() Agrega todos los pares clave/valor al hashMap.
putIfAbsent() Si la clave especificada no existe en el hashMap, inserta el par clave/valor en el hashMap.
remove() Elimina la asignación de la clave especificada key en el hashMap.
containsKey() Verifica si existe una asignación correspondiente a la clave especificada en el hashMap.
containsValue() Verifica si existe una asignación correspondiente al value especificado en el hashMap.
replace() Reemplaza el value correspondiente a la clave especificada en el hashMap.
replaceAll() Reemplaza todas las asignaciones en el hashMap con el resultado de la función dada.
get() Obtiene el value correspondiente a la clave especificada.
getOrDefault() Obtiene el value correspondiente a la clave especificada; si no encuentra la clave, devuelve el valor predeterminado establecido.
forEach() Ejecuta la operación especificada en cada asignación del hashMap.
entrySet() Devuelve una vista de colección de todos los elementos de asignación en el hashMap.
keySet() Devuelve una vista de colección de todas las claves en el hashMap.
values() Devuelve todos los values presentes en el hashMap.
merge() Agrega un par clave-valor al hashMap.
compute() Recalcula el valor de la clave especificada en el hashMap.
computeIfAbsent() Recalcula el valor de la clave especificada en el hashMap; si la clave no existe, la agrega al hashMap.
computeIfPresent() Recalcula el valor de la clave especificada en el hashMap, siempre que la clave exista en el hashMap.

Puedes consultar más métodos de API en:https://www.example.com/manual/jdk11api/java.base/java/util/HashMap.html

Java 集合框架Colecciones de Java

Otras extensiones