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. 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 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 import
. A continuación, puedes crear el mapa. Para ello, escribe:
import java.util.HashMap;
HashMap<String, String> nameDerHashMap = new HashMap<String, String> ();
javaLos 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:
import java.util.HashMap;
public clase Main {
public static void main(String[] args) {
HashMap<Integer, String> lista de clientes = new HashMap<>();
}
}
javaIncluir 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:
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);
}
}
javaCon el comando System.out.println
se imprime la lista de clientes:
{1077=Manolo Rodríguez, 15312=Pepe García, 73329=María Pérez}
javaAcceso 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:
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));
}
}
javaComo 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:
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);
}
}
javaEn la consola, se mostraría:
{15312=Pepe García, 73329=María Pérez}
javaComo alternativa, también puedes eliminar toda la lista. Para ello, utiliza el método clear(). Así es como se aplica en el ejemplo:
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);
}
}
javaEn la consola, se mostraría lo siguiente:
{ }
javaDeterminar 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:
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());
}
}
javaSe 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:
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);
}
}
}
javaSe mostrarían los siguientes resultados:
Manolo Rodríguez
Pepe García
María Pérez
javaComprobar 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:
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");
}
}
javaAunque en la lista sí aparece la clave “15312”, el valor “Ana Martínez” no aparece, por lo que la consola mostrará como resultado:
true
false
java