国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java HashMap和HashTable的區(qū)別詳解

2019-11-26 13:23:35
字體:
供稿:網(wǎng)友

  HashMap和HashTable,這二者的區(qū)別經(jīng)常被別人問起,今天在此總結(jié)一下。

(一)繼承的歷史不同

public class Hashtable extends Dictionary implements Mappublic class HashMap extends AbstractMap implements Map

    Hashtable是繼承自Dictionary類的,而HashMap則是Java 1.2引進的Map接口的一個實現(xiàn)。

(二)安全性不同

    HashMap是非synchronized,而HashTable在默認(rèn)的情況下是synchronized,這意味著HashTable是線程安全的,多個線程可以共享一個HashTable;而如果沒有正確的同步的話,多個線程是不能共享HashMap的。Java 5以后提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好。當(dāng)然,我們可以通過以下方法讓HashMap同步:

Map m = Collections.synchronizeMap(hashMap);

(三)是否可為空值的異同

    HashMap可以讓你將空值作為一個表條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數(shù)量的條目可以是空的value。這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個空的值,那么get()將返回null;而HashTable則不行,key和value都不允許出現(xiàn)null值。

(四)二者的遍歷方式的內(nèi)部實現(xiàn)上不同

    Hashtable、HashMap都使用了 Iterator迭代器,HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTable的enumerator迭代器不是fail-fast的。而由于歷史原因,Hashtable還使用了Enumeration的方式 。

(五)哈希值的使用不同

    HashTable直接使用對象的hashCode,而HashMap則需要重新計算hash值。

(六)二者內(nèi)部實現(xiàn)方式的數(shù)組的初始大小和擴容的方式不同

    HashTable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1;HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彰武县| 信阳市| 盐源县| 金昌市| 平湖市| 安福县| 文成县| 疏勒县| 嵩明县| 万年县| 红河县| 竹山县| 大姚县| 岗巴县| 车致| 镇原县| 惠东县| 麦盖提县| 响水县| 乌拉特后旗| 比如县| 化隆| 周口市| 凯里市| 宿迁市| 塔河县| 利川市| 南丰县| 邳州市| 综艺| 大悟县| 黄梅县| 满城县| 常德市| 弥渡县| 波密县| 清丰县| 桦川县| 博湖县| 永城市| 登封市|