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