欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

HashSet源碼分析:JDK源碼系列-創(chuàng)新互聯(lián)

1.簡(jiǎn)介

繼續(xù)分析源碼,上一篇文章把HashMap的分析完畢。本文開始分析HashSet簡(jiǎn)單的介紹一下。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括惠陽(yáng)網(wǎng)站建設(shè)、惠陽(yáng)網(wǎng)站制作、惠陽(yáng)網(wǎng)頁(yè)制作以及惠陽(yáng)網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,惠陽(yáng)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到惠陽(yáng)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

HashSet是一個(gè)無(wú)重復(fù)元素集合,內(nèi)部使用HashMap實(shí)現(xiàn),所以HashMap的特征耶繼承了下來(lái)。存儲(chǔ)的元素是無(wú)序的并且HashSet允許使用空的元素。

HashSet是非同步的。如果多個(gè)線程同時(shí)訪問(wèn)一個(gè)哈希 set,而其中至少一個(gè)線程修改了該 set,那么它必須 保持外部同步。(參考JDK1.8文檔,關(guān)注回復(fù)JDK可獲取中文版JDK文檔)

Set s = Collections.synchronizedSet(new HashSet(...));

上文鏈接:

HashMap源碼閱讀(一)

HashMap源碼閱讀(二)

1.繼承結(jié)構(gòu)

先看一下HashMap的繼承結(jié)構(gòu)

HashSet源碼分析:JDK源碼系列

和其他集合一樣HashSet也實(shí)現(xiàn)了Cloneable和Serializable兩個(gè)接口,同時(shí)也是先了Set接口實(shí)現(xiàn)了Set的一些接口規(guī)范。

  • Cloneable 克隆
  • Serializable序列化

2屬性

HashSet的存儲(chǔ)數(shù)據(jù)是由HashMap來(lái)實(shí)現(xiàn)的,所以HashMap的一些特性也都繼承了過(guò)來(lái)。在閱讀源碼的時(shí)候千萬(wàn)不要直接的去閱讀HashSet在閱讀之前最好先把HashMap看了。在閱讀HashMap的時(shí)候最好結(jié)合著1.7版本的源碼一起看。

private transient HashMap<E,Object> map;

上面說(shuō)到HashSet是由HashMap來(lái)實(shí)現(xiàn)的而存儲(chǔ)的數(shù)據(jù)作為HashMap的K,V統(tǒng)一就是PRESENT

// Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();

3.構(gòu)造方法

無(wú)參構(gòu)造方法,直接創(chuàng)建一個(gè)HashMap采用無(wú)參構(gòu)造方法的默認(rèn)屬性上篇文章說(shuō)過(guò)默認(rèn)容量是16加載因子是0.75

HashSet源碼分析:JDK源碼系列

指定容量

HashSet源碼分析:JDK源碼系列

指定容量和加載因子,加載因子在HashMap中用來(lái)計(jì)算容量默認(rèn)的就是總?cè)萘?加載因子,默認(rèn)的加載因子是0.75

HashSet源碼分析:JDK源碼系列

指定集合元素

HashSet源碼分析:JDK源碼系列

4.添加

HashSet源碼分析:JDK源碼系列

可以看出HashSet使用put進(jìn)行添加元素,要添加的元素作為mapd的Key 而value則默認(rèn)的就是PRESENT。上篇文章介紹過(guò)HashMap的put方法如果插入的值的Key不存在則返回null否則就返回已經(jīng)存在的值,所以這里做了一個(gè)判斷。是不是很簡(jiǎn)單。

5.查找

HashSet源碼分析:JDK源碼系列

查找元素調(diào)用了HashMap的containsKey方法如果存在返回true不存在返回false。

6.刪除

HashSet源碼分析:JDK源碼系列

刪除方法也是調(diào)用map的remove方法,看到這里我們看出HashSet全部是依賴于HashMap。

7.迭代方法

HashSet源碼分析:JDK源碼系列

也是通過(guò)Map來(lái)實(shí)現(xiàn)使用keySet來(lái)返回一個(gè)key的Iterator。

8.總結(jié)

其實(shí)HashSet的一些東西都是用HashMap來(lái)實(shí)現(xiàn)的,如果HashMap的源碼已經(jīng)閱讀過(guò)的話基本上沒(méi)有什么問(wèn)題。(這可能是我寫的最輕松的一篇問(wèn)文章哈哈哈哈哈)

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

分享名稱:HashSet源碼分析:JDK源碼系列-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.chinadenli.net/article18/dcshgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站做網(wǎng)站移動(dòng)網(wǎng)站建設(shè)網(wǎng)站收錄全網(wǎng)營(yíng)銷推廣營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司