# Java Hashmap: almacenar datos en pares clave-valor

Con la clase Java HashMaps, se pueden guardar datos en pares clave-valor. Esto no solo facilita la recuperación y el mantenimiento de una lista, sino que también ofrece numerosas opciones de acceso. Te presentaremos los métodos más importantes.

## ¿Qué son los HashMaps en Java?

Existen distintos métodos para almacenar y recuperar datos. Dependiendo del uso que se le quiera dar, usar uno u otro tipo de almacenamiento puede resultar más conveniente. En muchos casos, optar por la clase HashMap de Java puede ser la mejor solución. A diferencia de otros métodos, esta clase almacena los datos como **pares clave-valor**, es decir, a cada clave se le asigna exactamente un valor. Para recuperar el valor, basta con usar la clave correspondiente. Las claves y los valores pueden ser tipos de datos muy diferentes, como cadenas, números u otros objetos.

La clase HashMap de Java tiene, por tanto, varias ventajas. En primer lugar, permite realizar una búsqueda rápida dentro del marco del [lenguaje de programación](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/lenguajes-de-programacion-web/). Al mismo tiempo, el enfoque clave-valor evita que a una misma clave se le asignen múltiples valores y **de esta forma, se eluden las duplicaciones**. Solo los objetos se pueden incluir varias veces con claves diferentes. En lo que respecta al rendimiento, este tipo de almacenamiento y búsqueda también resulta ventajoso si se compara, por ejemplo, con las listas rígidas, que son mucho menos flexibles. Por ello, las [bases de datos claves-valor](https://www.ionos.com/es-us/digitalguide/hosting/cuestiones-tecnicas/bases-de-datos-clave-valor/) siguen este principio. A continuación, descubre cómo crear HashMaps en Java y utilizarlos para tus propósitos.

## ¿Cómo se crean?

Para crear un nuevo HashMap en Java, primero hay que importar la clase. Para ello, usa el [comando Java](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/comandos-java/) `import`. A continuación, puedes crear el mapa. Para ello, escribe:

```java
import java.util.HashMap;
HashMap<String, String> nameDerHashMap = new HashMap<String, String> ();
```

Los dos tipos de datos, separados por una coma (en este caso `String, String`), son la clave y el valor.

## Crear nuevo HashMap en Java

Para poder mostrar mejor el funcionamiento de Hashmap en Java, se presenta un caso práctico: una empresa quiere guardar una lista de clientes que pueda consultar en cualquier momento. Se necesita, por un lado, el nombre del cliente y, por otro, un número de cliente. Aunque el número de cliente (se corresponde con la clave) siempre es único, en teoría podrían existir varios clientes con el mismo nombre (se almacenaría como valor). El número se almacena como **interger** y los nombres como **strings**. En Java, HashMap se vería:

```java
import java.util.HashMap;
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	}
}
```

## Incluir elementos

Aunque ya tienes el HashMap de Java, se encuentra vacío. Para añadir nuevos pares clave-valor, se usa el método **put()**. A continuación el ejemplo:

```java
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, "Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(kundenliste);
	}
}
```

Con el comando `System.out.println` se imprime la lista de clientes:

```java
{1077=Manolo Rodríguez, 15312=Pepe García, 73329=María Pérez}
```

## Acceso a elementos

Aunque ya se dispone de una lista de clientes a la que teóricamente se le pueden añadir muchas más entradas, también puedes querer acceder a un cliente individual. Para ello, aplica el método **get()** a la clave correspondiente. Se vería:

```java
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.get(1077));
	}
}
```

Como resultado, solo debería aparecer “Manolo Rodríguez”.

## Eliminar una o todas las entradas

Si deseas eliminar una entrada específica, recurre al método **remove()**. Para ponerlo en práctica, sigue el ejemplo:

```java
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	lista de clientes.remove(1077);
	System.out.println(lista de clientes);
	}
}
```

En la consola, se mostraría:

```java
{15312=Pepe García, 73329=María Pérez}
```

Como alternativa, también puedes eliminar toda la lista. Para ello, utiliza el método **clear()**. Así es como se aplica en el ejemplo:

```java
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	kundenliste.clear();
	System.out.println(lista de clientes);
	}
}
```

En la consola, se mostraría lo siguiente:

```java
{ }
```

## Determinar el número de entradas

Aunque el ejemplo de HashMap en Java utilizado es muy sencillo y, por lo tanto, determinar el número de entradas no supone problema, en caso de proyectos de más envergadura averiguar el número exacto de entradas puede resultar más complicado. Para hacerlo, se puede recurrir al método **size()**. Así es como se utiliza:

```java
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.size());
	}
}
```

Se mostraría el número 3.

## Visualización de claves o valores solos

También es posible acceder a una lista que solo contenga claves o valores. Para ello, hay que recurrir a un bucle for-each. Utiliza el método **keySet()** para las claves y el método **values()** para los valores. Con este último, el código se mostraría como sigue:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	for (String i : lista de clientes.values()) {
		System.out.println(i);
		}
	}
}
```

Se mostrarían los siguientes resultados:

```java
Manolo Rodríguez
Pepe García
María Pérez
```

## Comprobar la disponibilidad de un elemento

No solo es posible acceder a una entrada concreta, sino que también se puede consultar si el HashMap de Java contiene algún valor o clave concretos. Para ello, se utilizan los métodos **containsKey()** (para claves) y **containsValue()** (para valores). Si el elemento está incluido, se obtiene “true”. Si el elemento no está incluido, el resultado es “false”. En la práctica, los métodos se implementan como se muestra a continuación:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.containsKey(15312));
	System.out.println(lista de clientes.containsValue("Ana Martínez");
	}
}
```

Aunque en la lista sí aparece la clave “15312”, el valor “Ana Martínez” no aparece, por lo que la consola mostrará como resultado:

```java
true
false
```


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/java-hashmap/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/java-hashmap/) for AI/LLM consumption.