回覆列表
  • 1 # 使用者4169576520979

    在Java 2以前,一般使用Hashtable來對映鍵值和元素。為了使用Java集合框架,Java對Hashtable進行了重新設計,但是,為了向後相容保留了所有的方法。Hashtable實現了Map介面,除了Hashtable具有同步功能之外,它與HashMap的用法是一樣的。·在使用時一般是用ArrayList代替Vector,LinkedList代替Stack,HashMap代替HashTable,即使在多執行緒中需要同步,也是用同步包裝類。另外在使用上還有一些小的差異,比如:

    HashTable的key和value都不允許為null值,而HashMap的key和value則都是允許null值的。這個其實沒有好壞之分,只是Sun為了統一Collection的操作特性而改進的。HashTable有一個contains(Object value)方法,功能上與containsValue(Object value)一樣,但是在實現上花銷更大,現在已不推薦使用。而HashMap只有containsValue(Object value)方法。HashTable使用Enumeration,HashMap使用Iterator。Iterator其實與Enmeration功能上很相似,只是多了刪除的功能。用Iterator不過是在名字上變得更為貼切一些。模式的另外一個很重要的功用,就是能夠形成一種交流的語言(或者說文化)。有時候,你說Enumeration大家都不明白,說Iterator就都明白了。在實現上兩者已有一些差異,這裡簡單說明一下:HashTable中構造hash陣列時initialCapacity預設大小是11,增加的方式是 old*2+1。HashMap中構造hash陣列時initialCapacity預設大小是16,而且一定是2的指數。對於雜湊值的使用也有所不同,HashTable直接使用物件的hashCode,程式碼是這樣的:而HashMap重新計算hash值,而且用與代替求模:

  • 中秋節和大豐收的關聯?
  • 飛傲x3與索尼a15比較哪個音質更好?