HashMap和 Hashtable的比较

 Hashtable 和 HashMap的比较

1.  HashMap可以接受null(HashMap可以接受为null的键值(key)和值(value), HashTable不可以接受为null的键(key)和值(value)

2.  HashMap是非synchronized的, Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable,

sychronized意味着在一次仅有一个线程能够更改Hashtable。就是说任何线程要更新Hashtable时要首先获得同步锁,其它线程要等到同步锁被释放之后才能再次获得同步锁更新Hashtable。

3.  由于synchronized的原因,Hashtable是线程安全的,但是效率低; 而HashMap是非synchronized的,因此是非线程安全的,在单线程情况下效率高,在多线程的情况下会产生死锁的可能

4.  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解

5.  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现

Hashtable:

     

HashMap:                            

 

6.  Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

Hashtable:

   

HashMap:                                                                                               

  

原文地址:https://www.cnblogs.com/study-everyday/p/6185950.html