Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Java HashMap

Un HashMap en Java es una parte del Marco de Colecciones de Java que implementa la interfaz Map. Se utiliza para almacenar pares clave-valor y proporciona un rendimiento en tiempo constante para operaciones básicas como añadir, eliminar y recuperar elementos. HashMap es muy eficiente y se suele utilizar cuando se requiere la asociación única de claves a valores.

Características principales

  • Colección desordenada: HashMap no mantiene ningún orden para sus entradas.
  • Permite valores nulos: Permite una clave nula y varios valores nulos.
  • No sincronizado: HashMap no es seguro para los hilos. Para el acceso concurrente, considera la posibilidad de utilizar ConcurrentHashMap.

Utilización

HashMap es ideal para situaciones en las que se requiere una recuperación, inserción y eliminación rápidas de elementos. Se utiliza a menudo para almacenar datos en caché, gestionar sesiones de usuario e implementar diccionarios.

Syntax

HashMap<KeyType, ValueType> mapName = new HashMap<>();
  • KeyType: El tipo de datos de las claves.
  • ValueType: El tipo de datos de los valores.
  • mapName: El nombre de la instancia de HashMap.

Ejemplos

Ejemplo 1: Operaciones básicas

import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        
        // Adding elements
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Orange", 2);
        
        // Retrieving an element
        int count = map.get("Apple");
        System.out.println("Count of Apples: " + count);
        
        // Removing an element
        map.remove("Banana");
        
        // Checking if a key exists
        boolean hasOrange = map.containsKey("Orange");
        System.out.println("Contains Orange: " + hasOrange);
    }
}

Este ejemplo demuestra las operaciones básicas con un HashMap, incluyendo añadir, recuperar, eliminar elementos y comprobar la existencia de una clave.

Ejemplo 2: Iterar sobre un HashMap

import java.util.HashMap;
import java.util.Map;

public class HashMapIteration {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Dog", 1);
        map.put("Cat", 2);
        map.put("Bird", 3);
        
        // Iterating using entrySet
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

Este ejemplo muestra cómo iterar sobre un HashMap utilizando el método entrySet, que proporciona acceso tanto a las claves como a los valores.

Ejemplo 3: Trabajar con distintos tipos de datos

import java.util.HashMap;

public class HashMapDifferentTypes {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "One");
        map.put(2, "Two");
        
        System.out.println("Value for key 1: " + map.get(1));
    }
}

Este ejemplo muestra un HashMap con claves Integer y valores String.

Consejos y buenas prácticas

  • Capacidad inicial y factor de carga: Cuando crees un HashMap, considera la posibilidad de especificar una capacidad inicial y un factor de carga para optimizar el rendimiento y reducir el número de operaciones de refrito.
    HashMap map = new HashMap<>(16, 0.75f);
  • Evita el Redimensionamiento Frecuente: Si se conoce de antemano el tamaño del HashMap, establece una capacidad inicial adecuada para evitar redimensionamientos frecuentes, que pueden degradar el rendimiento.
  • Seguridad de la rosca: Si se espera que varios subprocesos accedan simultáneamente a HashMap, utiliza Collections.synchronizedMap o ConcurrentHashMap para garantizar la seguridad de los subprocesos.
  • Utiliza Claves Inmutables: Prefiere utilizar objetos inmutables como claves para evitar problemas de coherencia del código hash y comportamientos inesperados.
  • Manipulación nula: Ten cuidado al utilizar claves o valores nulos, y asegúrate de que la lógica de tu aplicación los tiene en cuenta.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis