聲明,本文用的是jdk1.8數組
前面章節回顧:微信
如今這篇主要講Set集合的三個子類:數據結構
這篇主要來看看它們比較重要的方法是如何實現的,須要注意些什麼,最後比較一下哪一個時候用哪一個~多線程
強調:在學習本文以前,最好是看過Map系列的文章post
看這篇文章以前最好是有點數據結構的基礎:性能
固然了,若是講得有錯的地方還請你們多多包涵並不吝在評論去指正~學習
首先,咱們來看一下HashSet的繼承結構圖:spa
按照慣例,咱們來看看HashSet頂部註釋:.net
從頂部註釋來看,咱們就能夠概括HashSet的要點了:線程
我原本也是想在寫完List集合就轉到Set集合的了,但是:看到底層其實是一個HashMap實例時,我就去學習Map集合先了~
頂部註釋說底層其實是一個HashMap實例,那證據呢?
咱們再來看一下HashSet整個類的方法和屬性:
對於學習過HashMap的人來講,簡直簡單得讓人開心,哈哈哈~
咱們知道Map是一個映射,有key有value,既然HashSet底層用的是HashMap,那麼value在哪裏呢???
value是一個Object,全部的value都是它
因此能夠直接總結出:HashSet實際上就是封裝了HashMap,操做HashSet元素實際上就是操做HashMap。這也是面向對象的一種體現,重用性賊高!
建議:先去閱讀HashMap就是這麼簡單【源碼剖析】
首先,咱們也來看看TreeSet的類繼承結構圖:
按照慣例,咱們來看看TreeSet頂部註釋:
從頂部註釋來看,咱們就能夠概括TreeSet的要點了:
首先,咱們也來看看TreeSet的類繼承結構圖:
按照慣例,咱們來看看LinkedHashSet頂部註釋:
從頂部註釋來看,咱們就能夠概括LinkedHashSet的要點了:
能夠很明顯地看到,Set集合的底層就是Map,因此我都沒有作太多的分析在上面,也沒什麼好分析的了。
下面總結一下Set集合經常使用的三個子類吧:
HashSet:
TreeSet:
LinkedHashSet:
從結論而言咱們就能夠根據本身的實際狀況來使用了。
參考資料:
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同窗,能夠關注微信公衆號:Java3y。
爲了你們方便,剛新建了一下q羣:742919422,你們也能夠去交流交流。
文章的目錄導航:zhongfucheng.bitcron.com/post/shou-j…
目前初步打算寫多線程,大家以爲怎麼樣呢?能夠在評論區留言~