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: