Java 中的雜湊表和雜湊圖之間的區別

Mohammad Irfan 2023年10月12日
  1. Hashtable 與 HashMap
  2. 用 Java 建立 Hashtable
  3. 用 Java 建立 HashMap
  4. 在 Java 的 HashMap 中儲存 null
  5. 在 Java 中將空值儲存的 Hashtable
Java 中的雜湊表和雜湊圖之間的區別

本教程介紹了 Java 中 HashtableHashMap 之間的區別,還列出了一些用於理解該主題的示例程式碼。

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

相關文章 - Java Hashtable

相關文章 - Java HashMap