黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java編程入門, hashset實現之源碼解析

Java編程入門, hashset實現之源碼解析

更新時間:2020-05-25 16:01:49 來源:動力節點 瀏覽2348次

HashSet的底層實現,因為HashSet底層是通過HashMap實現的。 所以HashSet底層也是通過哈希表的數據結構存儲的。所以這里我們就不在介紹有關數據結構方面的知識了,下面我們從HashSet的初始化方面著手,來分析一下HashSet的底層實現。

初始化

Java編程入門, hashset實現之源碼解析

我們看到,在HashSet中的無參構造方法中,直接創建了一個HashMap對象。這就證明了我們上述所說的,HashSet底層是通過HashMap實現的。我們在分析HashMap那篇文章中有提到過。如果我們使用無參的構造方法來創建HashMap對象,那么此時底層的數據結構不會初始化,第一次初始化發生在第一次調用put方法的時候。所以我們在這里可以說,當我們調用無參構造方法來創建HashSet對象時,底層的數據結構也不會執行初始化。那么它第一次初始化的動作,也應該發生在第一次調用添加元素的方法中,也就是HashSet中的add方法。下面我們看一下該方法的具體的邏輯。

Java編程入門, hashset實現之源碼解析

上面代碼是HashSet中add方法,我們看到該方法的邏輯是直接調用了HashMap中的put方法,并將添加的元素的值設置為HashMap中的key,value存儲一個Object對象。

總結

分析到這里使我們知道HashSet有以下幾點特性,它們分別是:

在HashSet中是不能保證元素的添加順序與遍歷順序是一致的。因為底層是通過HashMap中的key的值保存的。因為HashMap中的key的值是通過key的hash code計算出來的。所以不能保證添加順序與遍歷順序是一致的。

因為HashSet底層是通過HashMap中的key的值保存的,所以在HashSet中是不能保存重復元素的。因為在HashMap中的key也是不能重復的。如果在HashMap中保存了重復的key,那么后添加到HashMap中的value會替換掉先添加到HashMap中的value。

因為HashMap不是線程安全的集合類,并且我們分析HashSet源碼時,也沒有發現HashSet添加額外的同步關鍵字synchronized,所以說明HashSet也不是線程安全的集合類。

Java編程入門, hashset實現之源碼解析

以上就是動力節點java培訓機構的小編針對“Java編程入門, hashset實現之源碼解析”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产亚洲女在线线精品 | 国产精品视频大全 | 91精品啪在线观看国产线免费 | 成年人污视频 | 午夜视频在线 | 91精品国产亚一区二区三区 | a毛片成人免费全部播放 | 天天看天天摸色天天综合网 | 成人综合激情网 | 久久国产欧美日韩精品 | www.黄色在线观看 | 国产综合色在线视频 | 天天添| 无遮挡h黄漫动漫在线观看 无遮挡h纯内动漫在线观看 | 狠狠躁天天躁夜夜躁夜天战 | 免费操| 永久免费看www色视频 | 国内精品a | 老人与老人免费a级毛片 | 亚洲欧美一区二区三区久本道 | 黄色国产一级片 | 最近2019中文字幕大全视频1 | 欧美在线成人午夜网站 | 99视频全部看免费观 | 亚洲 欧美 日韩 在线 香蕉 | 国产精品久久国产精麻豆99网站 | 亚洲欧美日韩不卡 | 日韩亚洲人成网站在线播放 | 免费观看成人久久网免费观看 | 国产在线不卡视频 | 播放欧亚一级特黄录像 | 最近免费中文字幕视频高清在线看 | 中文字幕日本一区波多野不卡 | 射狠狠| 亚洲男女一区二区三区出奶水了 | 噜噜吧噜噜色 | 丁香五月亚洲综合在线 | 日韩精品综合 | 黄色网址www | 成人片在线播放 | 看免费黄色大片 |