Mundo
del Programador

HashMap

Un diccionario de java contiene una serie de elementos que son la entrada que a su vez están formadas por un par (clave, valor). La clave kay permite acceder al valor. No puede haber clave duplicadas.

Java dispone de varios diccionarios: HashMap, EnumMap, Hashtable, IdentityHashMap, LinkedHashMap etc. Nosotros estudiaremos el HashMap.

Principales métodos de HashMap

  • get(clave) – obtiene el valor correspondiente a una clave. Devuelve null si no hay clave
  • put(clave, valor) – añade un par(clave, valor) al diccionario. Si hay un valor para esta clave, se machaca
  • keySet() - devuelve un conjunto (set) con todas las claves
  • values() - devuelve una colección con todos los valores
  • entrySet() - devuelve una colección con todos los pares(clave, valor)
  • containsKey(clave) – devuelve true si el diccionario contiene la clave indicada y false en caso contrario
  • getKey() - devuelve la clave de la entrada. Se aplica a una sola entrada del diccionario, es decir a una pareja(clave, valor)
  • getValue() - devuelve el contenido de la entrada. Se aplica a una sola entrada del diccionario, al igual que getKey()

Al declarar un diccionario hay que indicar los tipos tanto de la clave como el valor. En el siguiente ejemplo definimos el diccionario:


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

Ante de esto hay que importar la clase import java.util.HashMap;

Para insertar una entrada en el diccionario se utiliza el método put indicando la clave y el valor.


                  import java.util.HashMap;

                  public class EjemploHashMap01 {
                    public static void main(String[] args) {
                      HashMap<Integer, String> m = new HashMap<Integer, String>();

                      m.put(924, "Amalia Núñez");
                      m.put(921, "Cindy Nero");
                      m.put(700, "César Vázquez");
                      m.put(219, "Víctor Tilla");
                      m.put(537, "Alan Brito");
                      m.put(605, "Esteban Quito ");

                      System.out.println("Los elementos de m son: \n" + m);
                    }
                  }
                

Podremos utilizar el método print para extraer todas las entradas o utilizar un entrySet(conjunto de entradas). Otra opción seriá utilizar un for para recorrer una a una todas las entradas. En este último caso hay que convertir el diccionario en un entrySet ya que no se pueden sacar las entradas directamente del diccionario.


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

                  public class EjemploHashMap02 {
                    public static void main(String[] args) {
                      HashMap<Integer, String> m = new HashMap<Integer, String>();

                      m.put(924, "Amalia Núñez");
                      m.put(921, "Cindy Nero");
                      m.put(700, "César Vázquez");
                      m.put(219, "Víctor Tilla");
                      m.put(537, "Alan Brito");
                      m.put(605, "Esteban Quito ");

                      System.out.println("Todas las entradas del diccionario extraídas con entrySet:");
                      System.out.println(m.entrySet());
                      System.out.println("\nEntradas del diccionario extraídas una a una:");

                      for (Map.Entry pareja: m.entrySet()) {
                        System.out.println(pareja);
                      }
                    }
                  }
                

Con los métodos getKey y getValue se extraen la clave y el valor de una entrada.


                  import java.util.*;

                  public class EjemploHashMap03 {
                    public static void main(String[] args) {
                      HashMap<Integer, String> m = new HashMap<Integer, String>();

                      m.put(924, "Amalia Núñez");
                      m.put(921, "Cindy Nero");
                      m.put(700, "César Vázquez");
                      m.put(219, "Víctor Tilla");
                      m.put(537, "Alan Brito");
                      m.put(605, "Esteban Quito ");

                      System.out.println("Código\tNombre\n------\t-------------");
                      for (Map.Entry pareja: m.entrySet()) {
                        System.out.print(pareja.getKey() + "\t");
                        System.out.println(pareja.getValue());
                      }
                    }
                  }
                

Con containsKey comprobaremos si existe o no una determinada clave en un diccionario y con el método get extraeremos los valores que coresponden a esa clave.


                  import java.util.*;

                    public class EjemploHashMap04 {
                      public static void main(String[] args) {
                        HashMap<Integer, String> m = new HashMap<Integer, String>();

                        m.put(924, "Amalia Núñez");
                        m.put(921, "Cindy Nero");
                        m.put(700, "César Vázquez");
                        m.put(219, "Víctor Tilla");
                        m.put(537, "Alan Brito");
                        m.put(605, "Esteban Quito ");

                        System.out.print("Por favor, introduzca un código: ");
                        int codigoIntroducido = Integer.parseInt(System.console().readLine());

                        if (m.containsKey(codigoIntroducido)) {
                          System.out.print("El código " + codigoIntroducido + " corresponde a ");
                          System.out.println(m.get(codigoIntroducido));
                        } else {
                          System.out.print("El código introducido no existe.");
                      }
                    }
                  }
                

Ejercicios resueltos en github



Siguiente
Atras