Ordenación de una estructura HashMap de Java

Ordenación de una estructura HashMap de Java

En este artículo se presentan diferentes formas de ordenar una estructura HashMap de Java.

Un HashMap es una clase de java orientada al almacenamiento de datos del mismo tipo, igual que los típicos arrays de C o Java y los ArrayList.

Pero ¿cuál es la diferencia entre entre un array, un arrayList y un HashMap?

  • Por ejemplo, un array simple, que alberga objetos de la clase Habitacion, se puede definir de la siguiente forma:

  • Aquí vemos las dos características que definen un array o vector normal de C o Java:
    • Cuando se instancia un array se hace por una determinada longitud que no se puede superar, en este caso no puede albergar más de 10 objetos de tipo Habitacion.
    • Los arrays siempre se han indexado por números, donde en la posición 0 encontraremos el primer elemento, y en la posición n-1 encontraremos el último elemento, siendo n la longitud del array.

  • Por otro lado un ArrayList ofrece prestaciones superiores a un simple array. Se puede definir de la siguiente forma:

  • La característica principal de un arrayList es que se comporta como un array pero sin límite en el número de objetos que puede albergar. De hecho un arrayList se suele denominar también como array dinámico. Cada vez que se agrega un objeto, automáticamente crece en tamaño. En el ejemplo mostrado el primer elemento agregado ocupa la posición 0 y los siguientes se van ubicando en posiciones consecutivas crecientes, sin que haya un limite claro.

 

  • Y por último tenemos las estructuras tipo Map como un HashMap, el cual se utiliza para almacenar pares de datos de la forma {clave, valor}. Se suele denominar como HashMap <clave, valor> o HashMap <K, V>. La novedad respecto un array o un arrayList es que la información ya no está obligatoriamente indexada por números enteros. Está indexada por claves de datos únicas, que puede ser de distinto tipo (números, cadenas de texto, etc.)

  • Se almacena la información acompaña de una clave única o hash, que permite recuperar el valor almacenado de forma unívoca y en cualquier punto dado. Podríamos pensar en un HashMap como una especie de agenda telefónica que a partir del número telefónico nos permite obtener el perfil del usuario.

 

Una vez presentadas las diferencias de un HashMap respecto un array simple y un arrayList, veremos las 3 formas en las que podemos ordenar un HashMap de Java:

  • Ordenación por clave. Es el tipo de ordenación, tanto si la clave es numérica o de tipo string, que el HashMap hace de forma automática. En este caso si estuviera desordenado el HashMap la simple creación de un objeto TreeMap, volvería a reordenar el HashMap automáticamente:

  • Ordenación por valor a partir de dato entero. Se pretende ordenar el HashMap a través de un dato entero de la clase Habitacion, en este caso ident.

  • Ordenación por valor a partir de dato cadena. En este caso se pretende ordenar el HashMap a través de un dato String de la clase Habitacion, como es name. La diferencia respecto el caso anterior estriba en utilizar la función compareTo que es la que dentro de la clase Comparator, realiza la ordenación de cadenas alfanuméricas o String:

Espero que os haya resultado de ayuda. Un saludo y hasta el próximo!!!

Escribe un comentario