Programa para convertir HashMap a TreeMap en Java

HashMap es parte de la colección de Java desde Java 1.2. Proporciona la implementación básica de la interfaz Map de Java que almacena los datos en pares (Clave, Valor). Para acceder a un valor en HashMap, uno debe conocer su clave. HashMap se conoce como HashMap porque utiliza una técnica Hashing para el almacenamiento de datos.

TreeMap en Java se utiliza para implementar la interfaz Map y NavigableMap junto con la clase abstracta. El mapa se ordena según el orden natural de sus claves, o mediante un comparador proporcionado en el momento de la creación del mapa, según el constructor que se utilice. Esto demuestra ser una forma eficiente de ordenar y almacenar los pares clave-valor. 

A continuación se muestran métodos para convertir HashMap a TreeMap en Java de tal manera que el TreeMap resultante debería contener todas las asignaciones de HashMap, ordenadas por su orden natural de claves.

Ejemplos:  

Entrada: HashMap: {1=Geeks, 2=forGeeks, 3=Un portal de computadora} 
Salida: TreeMap: {1=Geeks, 2=forGeeks, 3=Un portal de computadora}

Entrada: HashMap: {1=1, 2=2, 3=3} 
Salida: TreeMap: {1=1, 2=2, 3=3} 
 

A continuación se muestran métodos para convertir HashMap a TreeMap en Java: 

1. En Java 8 : este método incluye convertir HashMap en Stream y recopila elementos de un flujo en un TreeMap utilizando el método Stream.collect() que acepta un recopilador.

Algoritmo

  1. Obtenga el HashMap para convertirlo.
  2. Obtener las entradas del hashMap
  3. Convertir las entradas del mapa en flujo
  4. Usando Collectors, recopile las entradas y conviértalas en TreeMap
  5. Ahora recoge el TreeMap
  6. Devuelve el TreeMap formado

Programa:

Java

// Java Program to convert
// HashMap to TreeMap in Java 8
   
import java.util.*;
import java.util.stream.*;
   
class GFG {
   
    // Generic function to construct a new 
    // TreeMap from HashMap
    public static <K, V> Map<K, V> convertToTreeMap(Map<K, V> hashMap)
    {
        Map<K, V>
            treeMap = hashMap
                          // Get the entries from the hashMap
                          .entrySet()
   
                          // Convert the map into stream
                          .stream()
   
                          // Now collect the returned TreeMap
                          .collect(
                              Collectors
   
                                  // Using Collectors, collect the entries
                                  // and convert it into TreeMap
                                  .toMap(
                                      Map.Entry::getKey,
                                      Map.Entry::getValue,
                                      (oldValue,
                                       newValue)
                                          -> newValue,
                                      TreeMap::new));
   
        // Return the TreeMap
        return treeMap;
    }
   
    public static void main(String args[])
    {
        // Create a HashMap
        Map<String, String> hashMap = new HashMap<>();
   
        // Add entries to the HashMap
        hashMap.put("1", "Geeks");
        hashMap.put("2", "forGeeks");
        hashMap.put("3", "A computer Portal");
   
        // Print the HashMap
        System.out.println("HashMap: " + hashMap);
   
        // construct a new TreeMap from HashMap
        Map<String, String> treeMap = convertToTreeMap(hashMap);
   
        // Print the TreeMap
        System.out.println("TreeMap: " + treeMap);
    }
}

Producción:

HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}

2. Uso de Java simple : en este método, pase la instancia de HashMap al constructor de TreeMap o al método putAll(). Esto creará directamente el TreeMap a partir del HashMap.

Algoritmo

  1. Obtenga el HashMap para convertirlo.
  2. Crear un nuevo TreeMap
  3. Pase el hashMap al método putAll() de treeMap
  4. Devuelve el TreeMap formado

Programa:

Java

// Java Program to convert
// HashMap to TreeMap in Java 8
   
import java.util.*;
import java.util.stream.*;
   
class GFG {
   
    // Generic function to construct a 
    // new TreeMap from HashMap
    public static <K, V> Map<K, V> convertToTreeMap(Map<K, V> hashMap)
    {
        // Create a new TreeMap
        Map<K, V> treeMap = new TreeMap<>();
   
        // Pass the hashMap to putAll() method
        treeMap.putAll(hashMap);
   
        // Return the TreeMap
        return treeMap;
    }
   
    public static void main(String args[])
    {
        // Create a HashMap
        Map<String, String> hashMap = new HashMap<>();
   
        // Add entries to the HashMap
        hashMap.put("1", "Geeks");
        hashMap.put("2", "forGeeks");
        hashMap.put("3", "A computer Portal");
   
        // Print the HashMap
        System.out.println("HashMap: " + hashMap);
   
        // construct a new TreeMap from HashMap
        Map<String, String> treeMap = convertToTreeMap(hashMap);
   
        // Print the TreeMap
        System.out.println("TreeMap: " + treeMap);
    }
}

Producción:

HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}

3. Uso de la biblioteca Guava de Google : Guava también proporciona una implementación de TreeMap que se puede usar para crear una instancia de TreeMap vacía.

Algoritmo:

  1. Obtenga el HashMap para convertirlo.
  2. Cree un nuevo TreeMap usando Maps.newTreeMap() de la biblioteca Guava
  3. Pase el hashMap al método putAll() de treeMap
  4. Devuelve el TreeMap formado

Programa:

Java

// Java Program to convert
// HashMap to TreeMap in Java 8
   
import com.google.common.collect.*;
import java.util.*;
import java.util.stream.*;
   
class GFG {
   
    // Generic function to construct a
    // new TreeMap from HashMap
    public static <K extends Comparable, V> Map<K, V> 
                       convertToTreeMap(Map<K, V> hashMap)
    {
        // Create a new TreeMap
        Map<K, V> treeMap = Maps.newTreeMap();
   
        // Pass the hashMap to putAll() method
        treeMap.putAll(hashMap);
   
        // Return the TreeMap
        return treeMap;
    }
   
    public static void main(String args[])
    {
        // Create a HashMap
        Map<String, String> hashMap = new HashMap<>();
   
        // Add entries to the HashMap
        hashMap.put("1", "Geeks");
        hashMap.put("2", "forGeeks");
        hashMap.put("3", "A computer Portal");
   
        // Print the HashMap
        System.out.println("HashMap: " + hashMap);
   
        // construct a new TreeMap from HashMap
        Map<String, String> treeMap = convertToTreeMap(hashMap);
   
        // Print the TreeMap
        System.out.println("TreeMap: " + treeMap);
    }
}

Producción:

HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}

4. Conversión entre tipos incompatibles : este método se puede utilizar si el TreeMap requerido es de un tipo diferente al HashMap. En esto, la conversión debe hacerse manualmente.

Algoritmo

  1. Obtenga el HashMap para convertirlo.
  2. Crear un nuevo TreeMap
  3. Para cada entrada del hashMap: 
    • Convierta la clave y el valor en el tipo deseado mediante la conversión
    • Inserte el par convertido por el método put() de treeMap
  4. Devuelve el TreeMap formado

Programa:

Java

// Java Program to convert
// HashMap to TreeMap in Java 8
   
import java.util.*;
import java.util.stream.*;
   
class GFG {
   
    // Function to construct a new TreeMap from HashMap
    public static Map<Integer, String> 
               convertToTreeMap(Map<String, String> hashMap)
    {
        // Create a new TreeMap
        Map<Integer, String> treeMap = new TreeMap<>();
   
        // Convert the HashMap to TreeMap manually
        for (Map.Entry<String, String> e : hashMap.entrySet()) {
            treeMap.put(Integer.parseInt(e.getKey()), e.getValue());
        }
   
        // Return the TreeMap
        return treeMap;
    }
   
    public static void main(String args[])
    {
        // Create a HashMap
        Map<String, String> hashMap = new HashMap<>();
   
        // Add entries to the HashMap
        hashMap.put("1", "Geeks");
        hashMap.put("2", "forGeeks");
        hashMap.put("3", "A computer Portal");
   
        // Print the HashMap
        System.out.println("HashMap: " + hashMap);
   
        // construct a new TreeMap<Integer, String>
        // from HashMap<String, String>
        Map<Integer, String> treeMap = convertToTreeMap(hashMap);
   
        // Print the TreeMap
        System.out.println("TreeMap: " + treeMap);
    }
}

Producción:

HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}

Publicación traducida automáticamente

Artículo escrito por RishabhPrabhu 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 *