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 中的流元素。
算法:
- 獲取要轉換的HashMap。
- 從 hashMap 中獲取條目
- 將映射條目轉換為流
- 使用Collector收集條目並將其轉換為TreeMap
- 現在收集TreeMap
- 返回形成的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。
算法:
- 獲取要轉換的HashMap。
- 創建一個新的TreeMap
- 將 hashMap 傳遞給 treeMap 的 putAll() 方法
- 返回形成的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實例。
算法:
- 獲取要轉換的HashMap。
- 使用Guava庫的Maps.newTreeMap()創建一個新的TreeMap
- 將 hashMap 傳遞給 treeMap 的 putAll() 方法
- 返回形成的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的類型不同,可以使用此方法。在這種情況下,需要手動完成轉換。
算法:
- 獲取要轉換的HashMap。
- 創建一個新的TreeMap
- 對於 hashMap 的每個條目:
- 通過強製轉換將 Key 和 Value 轉換為所需的類型
- 通過treeMap的put()方法插入轉換後的pair
- 返回形成的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}
相關用法
- Java HashMap轉ArrayList用法及代碼示例
- Java HashMap轉LinkedList用法及代碼示例
- Java HashMap clear()用法及代碼示例
- Java HashMap clone()用法及代碼示例
- Java HashMap isEmpty()用法及代碼示例
- Java HashMap size()用法及代碼示例
- Java HashMap put()用法及代碼示例
- Java HashMap putAll()用法及代碼示例
- Java HashMap putIfAbsent()用法及代碼示例
- Java HashMap remove()用法及代碼示例
- Java HashMap containsKey()用法及代碼示例
- Java HashMap containsValue()用法及代碼示例
- Java HashMap replace()用法及代碼示例
- Java HashMap replaceAll()用法及代碼示例
- Java HashMap get()用法及代碼示例
- Java HashMap getOrDefault()用法及代碼示例
- Java HashMap forEach()用法及代碼示例
- Java HashMap entrySet()用法及代碼示例
- Java HashMap keySet()用法及代碼示例
- Java HashMap values()用法及代碼示例
- Java HashMap merge()用法及代碼示例
- Java HashMap compute()用法及代碼示例
- Java HashMap computeIfAbsent()用法及代碼示例
- Java HashMap computeIfPresent()用法及代碼示例
- Java HashMap forEach(BiConsumer)用法及代碼示例
注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Program to Convert HashMap to TreeMap in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。