Hashtable
一、API文档中的Hashtable
- 此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
- 注意:Hashtable中“table”的“t”为小写
二、Hashtable与HashMap的区别
- Hashtable与HashMap功能相似,已基本被淘汰
具体功能与实现可参考文章《Java集合框架——Map接口 & HashMap类》 - Hashtable是线程安全的,HashMap是非线程安全的
- 由于Hashtable是线程安全的,所以Hashtable的效率要相对低
- Hashtable的键与值不能为null,HashMap的键与值可以为null
三、代码证明Hashtable不能使用null对象
package com.hashtable.demo;
import java.util.HashMap;
import java.util.Hashtable;
public class HashtableTest {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put(null, null);
map.put("aaa", null);
System.out.println(map); // {null=null, aaa=null}
Hashtable<String, String> table = new Hashtable<String, String>();
table.put(null, "aaa"); // error
}
}
- 当在Hashtable中放入(null, “aaa”)时,会出现空指针异常的报错
- 空指针异常:java.lang.NullPointerException