Java資料結構詳解(五) Set介面

2021-08-08 22:24:45 字數 815 閱讀 1920

乙個不包含重複元素的 collection。

更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1 和 e2,並且最多包含乙個 null 元素。正如其名稱所暗示的,此介面模仿了數學上的 set 抽象。

在所有構造方法以及 add、equals 和 hashcode 方法的協定上,set 介面還加入了其他規定,這些規定超出了從 collection 介面所繼承的內容。出於方便考慮,它還包括了其他繼承方法的宣告(這些宣告的規範已經專門針對 set 介面進行了修改,但是沒有包含任何其他的規定)。

對這些構造方法的其他規定是,所有構造方法必須建立乙個不包含重複元素的 set(正如上面所定義的)。

注:如果將可變物件用作 set 元素,那麼必須極其小心。如果物件是 set 中某個元素,以一種影響 equals 比較的方式改變物件的值,那麼 set 的行為就是不確定的。此項禁止的乙個特殊情況是不允許某個 set 包含其自身作為元素。

某些 set 實現對其所包含的元素有所限制。例如,某些實現禁止 null 元素,而某些則對其元素的型別所有限制。試圖新增不合格的元素會丟擲未經檢查的異常,通常是 nullpointerexception 或 classcastexception。試圖查詢不合格的元素是否存在可能會丟擲異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在 set 中插入不合格的元素,則該操作可能丟擲乙個異常,也可能成功,這取決於實現的選擇。此介面的規範中將這樣的異常標記為「可選」。

hashset , treeset ,

java資料結構 Set

set繼承的是collection介面,主要是實現資料的去重和排序。因此它有兩個實現類hashset和treeset。下面我來介紹一下這兩個類的作用。hashset,可以按照我們的自定義來進行去重。比如,我們在錄入學生資訊的過程中。要求學生的編號不能相同,因此我們需要對學生編號進行查重。但是,學生編...

Redis 資料結構 集合(set)(五)

集合 set 型別也是用來儲存多個的字串元素,但和列表型別不一樣的是,集合中不允許有重複的元素。ps,如果重複了,乙個集合下如何區分那個元素是那個元素呢?並且集合中的元素是無序的,不能通過索引下標獲取元素。乙個集合最多可以儲存2 32 1 個元素。redis除了支援集合的增刪改查,同時還支援多個集合...

Set資料結構

1 es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值 set 本身是乙個建構函式,用來生成 set 資料結構。const s new set 2,3,5,4,5,2,2 foreach x s.add x for let i of s 2 354上面 通過add...