程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺析Java中Map與HashMap,Hashtable,HashSet的差別

淺析Java中Map與HashMap,Hashtable,HashSet的差別

編輯:關於JAVA

淺析Java中Map與HashMap,Hashtable,HashSet的差別。本站提示廣大學習愛好者:(淺析Java中Map與HashMap,Hashtable,HashSet的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析Java中Map與HashMap,Hashtable,HashSet的差別正文


HashTable和HashMap差別

第一,繼續的父類分歧。
Hashtable繼續自Dictionary類,而HashMap繼續自AbstractMap類。但兩者都完成了Map接口。

public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, Serializable

public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable

第二,線程平安性分歧。
Hashtable 中的辦法是Synchronize的,而HashMap中的辦法在缺省情形下長短Synchronize的。在多線程並發的情況下,可以直接應用Hashtable,不須要本身為它的辦法完成同步,但應用HashMap時就必需要本身增長同步處置。

第三,能否供給contains辦法
HashMap把Hashtable的contains辦法去失落了,改成containsValue和containsKey,由於contains辦法輕易讓人惹起誤會。

Hashtable則保存了contains,containsValue和containsKey三個辦法,個中contains和containsValue功效雷同。

第四,key和value能否許可null值。
個中key和value都是對象,而且不克不及包括反復key,但可以包括反復的value。
Hashtable中,key和value都不許可湧現null值。
HashMap中,null可以作為鍵,如許的鍵只要一個;可以有一個或多個鍵所對應的值為null。當get()辦法前往null值時,能夠是 HashMap中沒有該鍵,也能夠使該鍵所對應的值為null。是以,在HashMap中不克不及由get()辦法來斷定HashMap中能否存在某個鍵, 而應當用containsKey()辦法來斷定。

第五,兩個遍歷方法的外部完成上分歧。
Hashtable、HashMap都應用了 Iterator。而因為汗青緣由,Hashtable還應用了Enumeration的方法 。

第六,hash值分歧。
哈希值的應用分歧,HashTable直接應用對象的hashCode。而HashMap從新盤算hash值。

第七,外部完成應用的數組初始化和擴容方法分歧。
Hashtable和HashMap它們兩個外部完成方法的數組的初始年夜小和擴容的方法。HashTable中hash數組默許年夜小是11,增長的方法是 old*2+1。

HashMap中hash數組的默許年夜小是16,並且必定是2的指數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved