麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

淺析Java中Map與HashMap,Hashtable,HashSet的區(qū)別

2019-11-26 15:59:28
字體:
供稿:網(wǎng)友

HashTable和HashMap區(qū)別

第一,繼承的父類不同。
Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。但二者都實現(xiàn)了Map接口。

復(fù)制代碼 代碼如下:

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的。在多線程并發(fā)的環(huán)境下,可以直接使用Hashtable,不需要自己為它的方法實現(xiàn)同步,但使用HashMap時就必須要自己增加同步處理。

第三,是否提供contains方法
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因為contains方法容易讓人引起誤解。

Hashtable則保留了contains,containsValue和containsKey三個方法,其中contains和containsValue功能相同。

第四,key和value是否允許null值。
其中key和value都是對象,并且不能包含重復(fù)key,但可以包含重復(fù)的value。
Hashtable中,key和value都不允許出現(xiàn)null值。
HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應(yīng)的值為null。當get()方法返回null值時,可能是 HashMap中沒有該鍵,也可能使該鍵所對應(yīng)的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵, 而應(yīng)該用containsKey()方法來判斷。

第五,兩個遍歷方式的內(nèi)部實現(xiàn)上不同。
Hashtable、HashMap都使用了 Iterator。而由于歷史原因,Hashtable還使用了Enumeration的方式 。

第六,hash值不同。
哈希值的使用不同,HashTable直接使用對象的hashCode。而HashMap重新計算hash值。

第七,內(nèi)部實現(xiàn)使用的數(shù)組初始化和擴容方式不同。
Hashtable和HashMap它們兩個內(nèi)部實現(xiàn)方式的數(shù)組的初始大小和擴容的方式。HashTable中hash數(shù)組默認大小是11,增加的方式是 old*2+1。

HashMap中hash數(shù)組的默認大小是16,而且一定是2的指數(shù)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品成人亚洲一区二区 | 九一传媒在线观看 | 噜噜社 | 国产噜噜噜噜噜久久久久久久久 | 欧美十区 | 久久久久久亚洲综合影院红桃 | 久久色网站 | 成人视屏在线观看 | 毛片视频免费观看 | 热99在线视频 | 国产精品99免费视频 | xxxxhd18hd日本hd| 欧美成在线视频 | 亚洲成人欧美在线 | 91短视频在线免费观看 | 麻豆视频在线免费观看 | 亚洲欧美日韩免费 | 一区二区三高清 | 一色视频| 国产在线播放一区二区 | 成人免费观看49www在线观看 | 国产精品久久久久国产精品三级 | 亚洲第一视频在线 | 精品在线观看一区二区 | 国产一区视频在线观看免费 | 国产午夜精品一区二区三区在线观看 | 亚洲精品欧美二区三区中文字幕 | 久久精品视频1 | 成人毛片网| 久久激情免费视频 | 久久99精品久久久久久秒播蜜臀 | 午夜精品久久久久久毛片 | 亚洲国产视频在线 | 日韩视频在线一区二区三区 | 一级免费大片 | 草草视频在线播放 | 韩国精品久久久 | 国产精品视频一区二区三区四区五区 | 在线成人免费网站 | 免费国产视频大全入口 | 亚洲射逼 |