¿Cómo ordenar Hashtable en Java?

Dado un Hashtable , la tarea es ordenar este Hashtable. Hashtable es una estructura de datos que almacena datos en formato clave-valor. Los datos almacenados no están ordenados ni conservan el orden de inserción. 

Ejemplo

Java

import java.io.*;
import java.util.*;
  
public class SortHashtable {
    public static void main(String[] args)
    {
  
        // create a hashtable
        Hashtable<Integer, String> ht
            = new Hashtable<Integer, String>();
  
        // insert data into hashtable
        ht.put(2, "mango");
        ht.put(3, "orange");
        ht.put(1, "apple");
  
        Set<Integer> keys = ht.keySet();
        Iterator<Integer> itr = keys.iterator();
  
        // traverse the TreeMap using iterator
        while (itr.hasNext()) {
            Integer i = itr.next();
            System.out.println(i + " " + ht.get(i));
        }
    }
}
Producción

3 orange
2 mango
1 apple

Las asignaciones de Hashtable se pueden ordenar de las siguientes dos maneras: 

  1. Uso de TreeMap
  2. Usando LinkedHashMap

Ejemplos:

Entrada: Hashtable: {2: «mango», 1: «manzana», 3: «naranja»}

Salida: 1 manzana

                2 mangos

               3 naranja

Entrada: Hashtable: {3: «tres», 2: «segundo», 1: «primero»}

Salida: 1 primero

                2 segundos

                3 tercio

Enfoque 1:

TreeMap almacena los datos en orden ordenado. Podemos usar el constructor TreeMap y convertir el objeto Hashtable en un objeto TreeMap. Ahora el objeto TreeMap resultante está ordenado.

Sintaxis:

TreeMap<K, V> tm = new TreeMap<K, V>(Map m);

Parámetros: m es el Hashtable en nuestro programa.

Ejemplo

Java

import java.io.*;
import java.util.*;
  
public class SortHashtable {
    public static void main(String[] args)
    {
  
        // create a hashtable
        Hashtable<Integer, String> ht
            = new Hashtable<Integer, String>();
  
        // insert data into hashtable
        ht.put(2, "mango");
        ht.put(3, "orange");
        ht.put(1, "apple");
  
        // create a TreeMap
        TreeMap<Integer, String> tm
            = new TreeMap<Integer, String>(ht);
  
        // create a keyset
        Set<Integer> keys = tm.keySet();
        Iterator<Integer> itr = keys.iterator();
  
        // traverse the TreeMap using iterator
        while (itr.hasNext()) {
            Integer i = itr.next();
            System.out.println(i + " " + tm.get(i));
        }
    }
}
Producción

1 apple
2 mango
3 orange

Enfoque 2:

LinkedHashMap almacena los datos en el orden en que se insertan. Cuando lleguen los datos, insértelos en LinkedHashMap, que tiene una propiedad para conservar el orden de inserción.

Sintaxis:

LinkedHashMap<K, V> lhm = new LinkedHashMap<K, V>();

Ejemplo

Java

import java.io.*;
import java.util.*;
  
public class SortHashTable {
    public static void main(String[] args)
    {
  
        // create a LinkedHashMap
        LinkedHashMap<Integer, String> lhm
            = new LinkedHashMap<Integer, String>();
  
        // insert data into LinkeHashMap
        lhm.put(2, "mango");
        lhm.put(3, "orange");
        lhm.put(1, "apple");
  
        // prepare a keyset
        Set<Integer> keys = lhm.keySet();
        Iterator<Integer> itr = keys.iterator();
  
        // traverse the LinkedHashMap using iterator
        while (itr.hasNext()) {
            Integer i = itr.next();
            System.out.println(i + " " + lhm.get(i));
        }
    }
}
Producción

2 mango
3 orange
1 apple

Publicación traducida automáticamente

Artículo escrito por swapnilbuchke y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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