當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashMap轉TreeMap用法及代碼示例


HashMap 是 Java 1.2 以來 Java 集合的一部分。它提供了Java Map接口的基本實現,它將數據存儲在(Key,Value)對中。要訪問 HashMap 中的值,必須知道其鍵。 HashMap 也稱為 HashMap,因為它使用哈希技術來存儲數據。

Java中的TreeMap用於實現Map接口,NavigableMap與抽象類一起實現。映射根據其鍵的自然順序進行排序,或者通過映射創建時提供的比較器進行排序,具體取決於使用的構造函數。事實證明,這是一種排序和存儲鍵值對的有效方法。

下麵是在 Java 中將 HashMap 轉換為 TreeMap 的方法,這樣生成的 TreeMap 應包含 HashMap 的所有映射,並按鍵的自然順序排序。

例子:

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} 
 

以下是在Java中將HashMap轉換為TreeMap的方法:

1. 在 Java 8 中:此方法包括將 HashMap 轉換為 Stream,並使用接受Collector的 Stream.collect() 方法收集 TreeMap 中的流元素。

算法:

  1. 獲取要轉換的HashMap。
  2. 從 hashMap 中獲取條目
  3. 將映射條目轉換為流
  4. 使用Collector收集條目並將其轉換為TreeMap
  5. 現在收集TreeMap
  6. 返回形成的TreeMap

程序:

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); 
    } 
}

輸出:

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

2. 使用純 Java:在此方法中,將 HashMap 實例傳遞給 TreeMap 構造函數或 putAll() 方法。這將直接從 HashMap 創建TreeMap。

算法:

  1. 獲取要轉換的HashMap。
  2. 創建一個新的TreeMap
  3. 將 hashMap 傳遞給 treeMap 的 putAll() 方法
  4. 返回形成的TreeMap

程序:

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); 
    } 
}

輸出:

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

3. 使用Google的Guava庫:Guava還提供了TreeMap實現,可用於創建空的TreeMap實例。

算法:

  1. 獲取要轉換的HashMap。
  2. 使用Guava庫的Maps.newTreeMap()創建一個新的TreeMap
  3. 將 hashMap 傳遞給 treeMap 的 putAll() 方法
  4. 返回形成的TreeMap

程序:

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); 
    } 
}

輸出:

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

4. 不兼容類型之間的轉換:如果所需的TreeMap與HashMap的類型不同,可以使用此方法。在這種情況下,需要手動完成轉換。

算法:

  1. 獲取要轉換的HashMap。
  2. 創建一個新的TreeMap
  3. 對於 hashMap 的每個條目:
    • 通過強製轉換將 Key 和 Value 轉換為所需的類型
    • 通過treeMap的put()方法插入轉換後的pair
  4. 返回形成的TreeMap

程序:

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); 
    } 
}

輸出:

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


相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Program to Convert HashMap to TreeMap in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。