Java 中的哈希表和哈希图之间的区别
本教程介绍了 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。