Java集合源碼分析之Set概述_一點課堂(多岸學院)

這篇文章是本系列的完結了,也會是讀起來最輕鬆的文章了。由於這裏只有一個概念,那就是Set是什麼,其他的則是一些感觸與總結。java

Set概述

由於Set的結構及實現都和Map保持高度一致,這裏將再也不對其進行分析了,感興趣的朋友能夠自行查看源碼。但咱們仍是須要知道什麼是SetSet是一個包含不可重元素的集合,也就是全部的元素都是惟一的。仍是看下文檔說明吧:數據結構

A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical set abstraction.學習

此外Set系列也有SortedSetNavigableSet這種基於排序的接口,它們的做用在分析Map時都已經詳細介紹過了。this

總結

分析了這麼多集合類的源碼以後,最大的感觸並非,「哦,原來如此~」,而是驚歎於做者高度的抽象思惟,嚴謹的代碼,以及極其規範的編碼風格。代碼自己的價值遠遠比不上這種思想帶來的受益,咱們應該掌握的是這些原理,而不是記住枯燥的代碼實現。編碼

但驚豔的背後,做者付出的艱辛也是無比巨大的,其中也飽含辛酸與無奈。創造出那麼多的數據結構,不就是爲了提升處理數據的能力嗎?然而現實是若是想在一方面追求極致,就必須在其餘方面有所妥協,沒有一種結構可以讓咱們一勞永逸。因此需求無盡,探索無盡。可還記得在LinkedList中的查詢方法?在這麼小的點上,還盡力把查詢速度提高了一半,當時真的被這種操做驚豔了,一方面是由於工程師的細膩,另外一方面,多是由於,「哎,實在作不了更多了~」的感嘆。設計

在Java的集合類中,大量的依賴於對象的equalshashCodeclone方法,有些還須要咱們實現Comparable接口。若是對數據結構有所理解,又清楚集合類用了哪些個數據結構,我想須要實現哪些方法是能夠推測出來的。若是咱們能把握這些細節,就能寫出更優秀的代碼。若是咱們能掌握這些思想,就能超脫語言的束縛,理解軟件設計的精髓。code

若是閱讀本系列文章可以給您帶來一丁點的提高,對我都是莫大的欣慰與鼓勵。orm

如今,你有把握回答在開篇中說起的幾個問題了嗎?對象


【感謝您能看完,若是可以幫到您,麻煩點個贊~】blog

更多經驗技術歡迎前來共同窗習交流: 一點課堂-爲夢想而奮鬥的在線學習平臺 http://www.yidiankt.com/

![關注公衆號,回覆「1」免費領取-【java核心知識點】] file

QQ討論羣:616683098

QQ:3184402434

想要深刻學習的同窗們能夠加我QQ一塊兒學習討論~還有全套資源分享,經驗探討,等你哦! 在這裏插入圖片描述

相關文章
相關標籤/搜索