HashMap和Hashtable的区别

继承和实现:


线程安全性:

HashMap不是线程安全的,而Hashtable是线程安全的。Hashtable中常用的方法都加入了synchronized,实现了线程安全

//HashMap常用方法
public V put(K key, V value)
public V get(Object key)
//Hashtable
public synchronized V put(K key, V value)
public synchronized V get(Object key)

执行效率:

在执行效率上,由于加上了synchronized实现了同步,所以Hashtable比HashMap效率低。

是否可以为null值:

HashMap是可以存储null的,而Hashtable不可以存储null,原因在于源码中HashMap中有特别存储null的方法,在执行put方法之前先进行判断是否为null,如果为空HashMap调用putForNullKey方法,Hashtable中直接判断之后抛出异常。

HashMap:

Hashtable:


还有一个小小的区别,HashMap初始容量是16,而Hashtable初始容量是11

posted @ 2018-01-14 17:51  In_new  阅读(183)  评论(0编辑  收藏  举报