溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中Set是什么

發(fā)布時間:2021-09-10 10:57:09 來源:億速云 閱讀:95 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下Java中Set是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Set概述

因為Set的結(jié)構(gòu)及實現(xiàn)都和Map保持高度一致,這里將不再對其進(jìn)行分析了,感興趣的朋友可以自行查看源碼。但我們還是需要知道什么是Set,Set是一個包含不可重元素的集合,也就是所有的元素都是唯一的。還是看下文檔說明吧:

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系列也有SortedSet、NavigableSet這種基于排序的接口,它們的作用在分析Map時都已經(jīng)詳細(xì)介紹過了。

總結(jié)

分析了這么多集合類的源碼之后,最大的感觸并不是,“哦,原來如此~”,而是驚嘆于作者高度的抽象思維,嚴(yán)謹(jǐn)?shù)拇a,以及極其規(guī)范的編碼風(fēng)格。代碼本身的價值遠(yuǎn)遠(yuǎn)比不上這種思想帶來的受益,我們應(yīng)該掌握的是這些原理,而不是記住枯燥的代碼實現(xiàn)。

但驚艷的背后,作者付出的艱辛也是無比巨大的,其中也飽含辛酸與無奈。創(chuàng)造出那么多的數(shù)據(jù)結(jié)構(gòu),不就是為了提高處理數(shù)據(jù)的能力嗎?然而現(xiàn)實是如果想在一方面追求極致,就必須在其他方面有所妥協(xié),沒有一種結(jié)構(gòu)能夠讓我們一勞永逸。所以需求無盡,探索無盡。可還記得在LinkedList中的查詢方法?在這么小的點上,還盡力把查詢速度提升了一半,當(dāng)時真的被這種操作驚艷了,一方面是因為工程師的細(xì)膩,另一方面,可能是因為,“哎,實在做不了更多了~”的感嘆。

在Java的集合類中,大量的依賴于對象的equals、hashCode、clone方法,有些還需要我們實現(xiàn)Comparable接口。如果對數(shù)據(jù)結(jié)構(gòu)有所理解,又清楚集合類用了哪些個數(shù)據(jù)結(jié)構(gòu),我想需要實現(xiàn)哪些方法是可以推測出來的。如果我們能把握這些細(xì)節(jié),就能寫出更優(yōu)秀的代碼。如果我們能掌握這些思想,就能超脫語言的束縛,理解軟件設(shè)計的精髓。

以上是“Java中Set是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI