1,俩者的初始大小与扩容方式不同
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 16
Hashmap初始大小为16
public Hashtable() {
this(11, 0.75f);
Hashtable中初始大小为11
Hashmap的扩容方式是二倍扩容。
Hashtable的扩容方式是newCapacity = oldCapacity * 2 + 1 ,是原来大小的二倍再加1.
2,继承的父类不同
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。
3,线程安全性不同
Hashmap是非线程安全的,hashtable是线程安全的
4,contains方式不同
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。
Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。
5,俩者的key与value值能否为null
Hashtable中,key和value都不允许出现null值。
Hashmap中,key与value是可以出现null值的