类 Hashtable及与HashMap的区别
程序员文章站
2022-06-17 08:26:29
...
类 Hashtable<K,V>
所有已实现的接口: Serializable, Cloneable, Map<K,V>此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
从Java 2 平台 v1.2起,此类就被改进以实现 Map 接口,
使它成为 Java Collections Framework 中的一个成员。
不像新的 collection 实现,Hashtable 是同步的
已被HashMap替代
面试题
HashMap和Hashtable的区别
共同点:
底层都是哈希算法,都是双列集合
区别:
1,HashMap是线程不安全的,效率高,JDK1.2版本
Hashtable是线程安全的,效率低,JDK1.0版本的
2,HashMap可以存储null键和null值
Hashtable不可以存储null键和null值
import java.util.HashMap;
import java.util.Hashtable;
public class g {
public static void main(String[] args) {
HashMap<String, Integer> hm = new HashMap<>();
hm.put(null, 23);
hm.put("李四", null);
System.out.println(hm);
Hashtable<String, Integer> ht = new Hashtable<>();
//ht.put(null, 23);
//ht.put("张三", null);
/* java.lang.NullPointerException
at java.util.Hashtable.put(Unknown Source)*/
System.out.println(ht);
}
}