Program to Convert HashMap to TreeMap in Java

01 Oct, 2021
HashMap is a part of Java’s collection since Java 1.2. It provides the basic implementation of Map interface of Java which stores the data in (Key, Value) pairs. To access a value in HashMap, one must know its key. HashMap is known as HashMap because it uses a technique Hashing for storage of data.
The TreeMap in Java is used to implement Map interface and NavigableMap along with the Abstract Class. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used. This proves to be an efficient way of sorting and storing the key-value pairs. 
Below are methods to convert HashMap to TreeMap in Java in such a way that the resultant TreeMap should contain all mappings of the HashMap, sorted by their natural ordering of keys.
Examples:  
Input: HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal} Output: TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
Input: HashMap: {1=1, 2=2, 3=3} Output: TreeMap: {1=1, 2=2, 3=3}  
Below are methods to convert HashMap to TreeMap in Java: 
1. In Java 8: This method includes converting the HashMap to a Stream and collects elements of a stream in a TreeMap using Stream.collect() method which accepts a collector.
Algorithm: 
Get the HashMap to be converted.Get the entries from the hashMapConvert the map entries into streamUsing Collectors, collect the entries and convert it into TreeMapNow collect the TreeMapReturn the formed TreeMap
Get the HashMap to be converted.
Get the entries from the hashMap
Convert the map entries into stream
Using Collectors, collect the entries and convert it into TreeMap
Now collect the TreeMap
Return the formed TreeMap
Program:
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);    }}
Output:
HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
2. Using Plain Java: In this method, either pass HashMap instance to the TreeMap constructor or to putAll() method. This will directly create the TreeMap from the HashMap.
Algorithm: 
Get the HashMap to be converted.Create a new TreeMapPass the hashMap to putAll() method of treeMapReturn the formed TreeMap
Get the HashMap to be converted.
Create a new TreeMap
Pass the hashMap to putAll() method of treeMap
Return the formed TreeMap
Program:
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);    }}
Output:
HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
3. Using Google’s Guava library: Guava also provides a TreeMap implementation which can be used to create an empty TreeMap instance.
Algorithm:
Get the HashMap to be converted.Create a new TreeMap using Maps.newTreeMap() of Guava libraryPass the hashMap to putAll() method of treeMapReturn the formed TreeMap
Get the HashMap to be converted.
Create a new TreeMap using Maps.newTreeMap() of Guava library
Pass the hashMap to putAll() method of treeMap
Return the formed TreeMap
Program:
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);    }}
Output:
HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
4. Conversion between incompatible types: This method can be used if the required TreeMap is of the different type than the HashMap. In this, the conversion needs to be done manually.
Algorithm: 
Get the HashMap to be converted.Create a new TreeMapFor each entry of the hashMap: Convert the Key and the Value into the desired type by castingInsert the converted pair by put() method of treeMapReturn the formed TreeMap
Get the HashMap to be converted.
Create a new TreeMap
For each entry of the hashMap: Convert the Key and the Value into the desired type by castingInsert the converted pair by put() method of treeMap
Convert the Key and the Value into the desired type by casting
Insert the converted pair by put() method of treeMap
Return the formed TreeMap
Program:
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);    }}
Output:
HashMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
TreeMap: {1=Geeks, 2=forGeeks, 3=A computer Portal}
 
kashishsoda
Java - util package
Java-HashMap
Java-Map-Programs
java-TreeMap
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array