Java 中的雜湊表和雜湊圖之間的區別
Mohammad Irfan
2023年1月30日
2021年4月29日
- Hashtable 與 HashMap
-
用 Java 建立
Hashtable
-
用 Java 建立
HashMap
-
在 Java 的
HashMap
中儲存 null -
在 Java 中將空值儲存的
Hashtable
中
本教程介紹了 Java 中 Hashtable
和 HashMap
之間的區別,還列出了一些用於理解該主題的示例程式碼。
Hashtable 是 Java 集合框架中的一個類,用於以鍵值對的形式儲存資料。它是 Java 中的遺留類,並且在雜湊概念上進行工作以儲存元素。在最新的 Java 版本中,不建議使用 Hashtable。我們應該使用比 Hashtable 更高階的 HashMap。請參見下表,該表總結了 Java 中 Hashtable 和 HashMap 之間的主要區別。
Hashtable 與 HashMap
Hashtable |
HashMap |
---|---|
同步 | 非同步 |
不允許為空 | 允許為空 |
舊版 | 新版 |
慢 | 快 |
在上面的比較表中,我們可以清楚地看到 Hashtable 和 HashMap 之間的主要區別。現在,讓我們看一些例子。
由於 Hashtable
在內部是同步的,因此這使 Hashtable
稍慢於 HashMap
。
用 Java 建立 Hashtable
在此示例中,我們將建立雜湊表。這是建立雜湊表的最簡單方法,我們只需要在程式碼中匯入雜湊表即可。該類位於 java.util
包中。請參見下面的示例。
import java.util.Hashtable;
public class SimpleTesting{
public static void main(String[] args) {
Hashtable<Integer,String> hashTable = new Hashtable<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
System.out.println(hashTable);
}
}
輸出:
{3=Three, 2=Two, 1=One}
用 Java 建立 HashMap
在此示例中,我們將使用 Java 建立 HashMap
。這是建立 HashMap 的最簡單方法,我們只需要在程式碼中匯入 HashMap。該類位於 java.util
包中。請參見下面的示例。
import java.util.HashMap;
public class SimpleTesting{
public static void main(String[] args) {
HashMap<Integer,String> hashTable = new HashMap<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
System.out.println(hashTable);
}
}
輸出:
{3=Three, 2=Two, 1=One}
在 Java 的 HashMap
中儲存 null
HashMap
允許儲存空值,這意味著我們可以在 HashMap
中儲存一個空鍵和多個空值。當你的集合中有 null 時,此類非常有用。請參見下面的示例。
import java.util.HashMap;
public class SimpleTesting{
public static void main(String[] args) {
HashMap<Integer,String> hashTable = new HashMap<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
hashTable.put(null, "Four");
hashTable.put(null, null);
System.out.println(hashTable);
}
}
輸出:
{null=null, 1=One, 2=Two, 3=Three}
在 Java 中將空值儲存的 Hashtable
中
Hashtable
不允許儲存空值,這意味著我們不能在雜湊表中儲存空值。當你的集合中沒有 null 時,此類無用。請參見下面的示例。
如果儲存的是空值,則丟擲 NullPointerException
異常。
import java.util.Hashtable;
public class SimpleTesting{
public static void main(String[] args) {
Hashtable<Integer,String> hashTable = new Hashtable<>();
hashTable.put(1, "One");
hashTable.put(2, "Two");
hashTable.put(3, "Three");
hashTable.put(null, "Four");
hashTable.put(null, null);
System.out.println(hashTable);
}
}
輸出:
Exception in thread "main" java.lang.NullPointerException