HashMap和HashTable
1、继承的类不同
HashMap是继承的AbstractMap类,Hashtable是继承的Dictionary类。
2、安全性
HashMap是线程不安全,HashTable是线程安全的。
3、是否存在contains方法
HashMap把HashTable的contains方法去掉了,改成了containsValue和containsKey;
HashTable保留了contains、containsValue和containKey三个方法。
4、key和value是否运行为空值
HashMap中key和value是允许为空的,但是key只能设置一个null,但是可以有多个value为null;
HashTable中不允许key、value为null。
5、遍历方式不同
HashMap使用的是Iterator,HashTable使用了Iterator、Enumeration。
6、数组初始化和扩容方式不同。
HashMap默认是16,Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。
Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。HashTable在不指定容量的情况下的默认容量为11,
Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。