Java 中的哈希表和哈希图之间的区别
Mohammad Irfan
2023年10月12日
- 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