一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java中Hashtable類與HashMap類的區別詳解

Java中Hashtable類與HashMap類的區別詳解

2020-03-20 13:56hebedich JAVA教程

Hashtable的應用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable。可能你覺得Hashtable很好用,為什么不用呢?這里簡單分析他們的區別。

Hashtable類

Hashtable繼承Map接口,實現一個key-value映射的哈希表。任何非空(non-null)的對象都可作為key或者value。

添加數據使用put(key, value),取出數據使用get(key),這兩個基本操作的時間開銷為常數。

Hashtable通過initial capacity和load factor兩個參數調整性能。通常缺省的load factor 0.75較好地實現了時間和空間的均衡。增大load factor可以節省空間但相應的查找時間將增大,這會影響像get和put這樣的操作。
使用Hashtable的簡單示例如下,將1,2,3放到Hashtable中,他們的key分別是”one”,”two”,”three”:

?
1
2
3
4
Hashtable numbers = new Hashtable();
numbers.put("one", new Integer(1));
numbers.put("two", new Integer(2));
numbers.put("three", new Integer(3));

要取出一個數,比如2,用相應的key:

?
1
2
Integer n = (Integer)numbers.get("two");
System.out.println("two = " + n);

由于作為key的對象將通過計算其散列函數來確定與之對應的value的位置,因此任何作為key的對象都必須實現hashCode和equals方法。hashCode和equals方法繼承自根類Object,如果你用自定義的類當作key的話,要相當小心,按照散列函數的定義,如果兩個對象相同,即obj1.equals(obj2)=true,則它們的hashCode必須相同,但如果兩個對象不同,則它們的hashCode不一定不同,如果兩個不同對象的hashCode相同,這種現象稱為沖突,沖突會導致操作哈希表的時間開銷增大,所以盡量定義好的hashCode()方法,能加快哈希表的操作。

如果相同的對象有不同的hashCode,對哈希表的操作會出現意想不到的結果(期待的get方法返回null),要避免這種問題,只需要牢記一條:要同時復寫equals方法和hashCode方法,而不要只寫其中一個。
Hashtable是同步的。

HashMap類

HashMap和Hashtable類似,不同之處在于HashMap是非同步的,并且允許null,即null value和null key。但是將HashMap視為Collection時(values()方法可返回Collection),其迭代子操作時間開銷和HashMap的容量成比例。因此,如果迭代操作的性能相當重要的話,不要將HashMap的初始化容量設得過高,或者load factor過低。

總結

  1. Hashtable的方法是同步的,HashMap則是非同步的,所以在多線程場合要手動同步HashMap,這個區別就像Vector和ArrayList一樣。
  2. Hashtable不允許null值(key和value都不可以),HashMap允許null值(key和value都可以)。
  3. Hashtable比HashMap多一個elements方法用于遍歷。
  4. Hashtable使用Enumeration,HashMap使用Iterator。
  5. 哈希值的使用不同,Hashtable直接使用對象的hashCode,而HashMap重新計算hash值,而且用與代替求模。
  6. Hashtable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久婷婷丁香五月色综合啪免费 | 日本黄a三级三级三级 | 天天舔天天操天天干 | 奇米网7777| 亚洲v成人天堂影视 | 日韩理论片在线看免费观看 | 波多野结衣中文字幕乱七八糟 | 极品妖艳许清赵丽全文免费阅读 | 欧美另类老女人 | 亚洲、国产综合视频 | 极品妖艳许清赵丽全文免费阅读 | 国产成人福利色视频 | 亚洲国产成人精品激情 | 青青草伊人久久 | 国产精品高清视亚洲一区二区 | 国产裸舞在线一区二区 | 欧美日韩一区二区三区韩大 | 污书屋| 亚洲天堂影院在线观看 | 特级淫片欧美高清视频蜜桃 | 国产美女下面流出白浆视频 | 日本人妖网站 | 日本人成年视频在线观看 | 日本中文字幕二区三区 | 韩国免费特一级毛片 | 亚洲AV久久无码精品九号 | 日本xxxx69hd | 视频一区 日韩 | 国产香蕉一区二区在线网站 | 成人一区二区丝袜美腿 | 第一次破学生处破 | 男男视频18免费网站 | 无套暴躁白丝秘书 | 亚洲精品资源在线 | 欧美美女一区二区三区 | 国产精品福利短视在线播放频 | 亚洲成av人片天堂网 | 波多野结衣女教师在线观看 | 午夜特级毛片 | 国内精品自产拍在线观看91 | 亚洲品质自拍网站 |