[Essential] - Hashtable 與 Hashmap 的區別

1.HashTable的方法是同步的,HashMap未經同步,所以在多線程場合要手動同步HashMap這個區別就像Vector和ArrayList一樣。
[如何手功同步?]
關於詳細的手功同步參看文章: http://www.diybl.com/course/3_program/java/javajs/2008515/116888.html

這裏是結論:
1、如果 ConcurrentHashMap 夠用,則使用 ConcurrentHashMap。
2、如果需自己實現同步,則使用 JDK1.5 提供的鎖機制,避免使用 synchronized 關鍵字。

[JAVA同步的機制]

2.HashTable不允許null值(key和value都不可以),HashMap允許null值(key和value都可以)。

3.HashTable有一個contains(Object value),功能和containsValue(Object value)功能一樣。

4.HashTable使用Enumeration,HashMap使用Iterator。
[Enumeration]與[Iterator]的區別?
暫時只找到這一段:
Iterator和enumeration都是用來訪問集合的接口.
在Iterator接口中定義了三個方法
1.hasNext() 是否還有下一個元素
2.next() 返回下一個元素
3.remove() 刪除當前元素
enumeration只定義了前2個方面,沒有remove方法,不具備刪除功能.

以上只是表面的不同,它們的實現也有很大的不同。

5.HashTable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數。

6.哈希值的使用不同,HashTable直接使用對象的hashCode
[hashCode的作用]
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 1004
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章