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。

 

posted @ 2020-08-29 16:36  墨韵如晞  阅读(192)  评论(0编辑  收藏  举报