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