Cómo clasificar Hashtable en java

Por Chaitanya Singh | Filed Under: Colecciones de Java

Hashtable no conserva el orden de inserción, ni clasifica los datos insertados en base a claves o valores. Lo que significa que no importa qué claves y valores se insertan en Hashtable, el resultado no estaría en ningún orden particular.

Por ejemplo: Echemos un vistazo al siguiente programa y su resultado:

import java.util.*;public class HashtableDemo{ public static void main(String args[]) { Hashtable<Integer, String> ht= new Hashtable<Integer, String>(); ht.put(10, "Chaitanya"); ht.put(1, "Ajeet"); ht.put(11, "Test"); ht.put(9, "Demo"); ht.put(3, "Anuj"); // Obtener un conjunto de las entradas Set set = ht.entrySet(); // Obtener un iterador Iterator i = set.iterator(); // Mostrar elementos while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } }}

Salida:

10: Chaitanya9: Demo3: Anuj1: Ajeet11: Prueba

Como pueden ver, los pares clave-valor de salida están en orden aleatorio. No tenemos orden de inserción ni los valores están ordenados en base a claves o valores.

La solución

Hay formas de ordenar Hashtable usando Collections.list y Collections.sort, sin embargo lo mejor es usar LinkedHashMap o TreeMap.

Usa LinkedHashMap: Cuando quieras conservar el orden de inserción.
Usa TreeMap: Cuando quieras ordenar los pares clave-valor.

Tomemos el mismo ejemplo usando LinkedHashMap y TreeMap:

Usando LinkedHashMap

importar java.util.*;public class LinkedHashMapDemo{ public static void main(String args[]) { LinkedHashMap<Integer, String> lhm= new LinkedHashMap<Integer, String>(); lhm.put(10, "Chaitanya"); lhm.put(1, "Ajeet"); lhm.put(11, "Test"); lhm.put(9, "Demo"); lhm.put(3, "Anuj"); // Obtener un conjunto de las entradas Set set = lhm.entrySet(); // Obtener un iterador Iterator i = set.iterator(); // Mostrar elementos while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } }}

Salida:

10: Chaitanya1: Ajeet11: Prueba9: Demo3: Anuj

¡Voila! Tenemos el resultado en la orden de inserción.

¿Y si queremos ordenar el resultado? Usa el TreeMap. Ver el siguiente ejemplo:

Usar TreeMap

importar java.util.*;clase pública TreeMapDemo{ public static void main(String args[]) { TreeMap<Integer, String> tm= new TreeMap<Integer, String>(); tm.put(10, "Chaitanya"); tm.put(1, "Ajeet"); tm.put(11, "Test"); tm.put(9, "Demo"); tm.put(3, "Anuj"); // Obtener un conjunto de las entradas Set set = tm.entrySet(); // Obtener un iterador Iterator i = set.iterator(); // Mostrar elementos while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } }}

Salida:

1: Ajeet3: Anuj9: Demo10: Chaitanya11: Prueba

Como pueden ver, la salida que obtuvimos está ordenada en base a las claves.

  1. Cómo anular el método toString para ArrayList en Java
  2. Java – Eliminar la cartografía del ejemplo de HashMap
  3. Cómo hacer un bucle de ArrayList en Java
  4. Java – Comprueba si un valor en particular existe en el ejemplo de HashMap
  5. Java – Ejemplo de Convertir Vector en Lista de Arreglo
  6. Cómo sincronizar HashMap en Java con el ejemplo
Rate this post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio