Buscar en el Blog

martes, 28 de agosto de 2012

Cómo preservar el orden de los elementos de un HashMap

Cuándo usamos un HashMap en Java y consultamos sus elementos ya sean las claves o los valores, éstos por defecto se nos devuelven ordenados.

En ocasiones, éste comportamiento por defecto de un  HashMap  no nos conviene, por lo que para preservar el orden de cómo ingresamos los elementos es preferible usar un  LinkedHashMap .

En la siguiente clase Java se ilustra éste comportamiento usando un  HashMap  y un  LinkedHashMap .

public class HashMapTest {

    public static void main(String[] args) {

        System.out.println("Mapa Ordenado usando HashMap...");
        HashMap<String, Object> sortMap = new HashMap<String, Object>();

        sortMap.put("B", new Integer(2));
        sortMap.put("Z", new Integer(1));
        sortMap.put("A", new Integer(9));

        for (Map.Entry entry : sortMap.entrySet()) {
            System.out.println("Clave : " + entry.getKey()
                    + " Valor : " + entry.getValue());
        }


        System.out.println("\nMapa Preservando el Orden usando LinkedHashMap...");
        LinkedHashMap<String, Object> unsortMap = new LinkedHashMap<String, Object>();

        unsortMap.put("B", new Integer(2));
        unsortMap.put("Z", new Integer(1));
        unsortMap.put("A", new Integer(9));

        for (Map.Entry entry : unsortMap.entrySet()) {
            System.out.println("Clave : " + entry.getKey()
                    + " Valor : " + entry.getValue());
        }
    }
}


El resultado de la ejecución de éste programa es el siguiente:

Mapa Ordenado usando HashMap...
Clave : A Valor : 9
Clave : B Valor : 2
Clave : Z Valor : 1

Mapa Preservando el Orden usando LinkedHashMap...
Clave : B Valor : 2
Clave : Z Valor : 1
Clave : A Valor : 9

9 comentarios:

  1. Muchas gracias! era justo lo que necesitaba!

    ResponderEliminar
  2. Muchisimas gracias!! No sabia que existiera, me ha venido de perlas!!

    ResponderEliminar
  3. Gracias por la informacion

    ResponderEliminar
  4. Hola, una cosilla, desde mi experiencia en un HashMap el orden de los elementos se establece por un código hash de los elementos que se meten en el mapa. Pero no se asegura que el orden sea entendible por el usuario.

    ResponderEliminar
  5. muchas gracias ! lo utilice para un proyecto de android y trabaja excelente

    ResponderEliminar
  6. Muchas gracias me servio tal cual , era justo lo que necesitaba.

    ResponderEliminar