Set集合介面

2021-08-20 08:26:32 字數 2388 閱讀 4898

set介面

set集合就像是乙個罐子,一旦把物件「丟進去」,多個物件之間就沒有順序,

set元素不可以重複

set判斷兩個物件是否相同不是使用== 而是使用equals

set t = new hashset();

t.add("aa");

t.add(new string("aa"));

system.out.println(t.add(new string("aa")));

//false

//set 對比兩個物件是否相同使用 equals

system.out.println(t.tostring());

//[aa]

set集合 的實現類:hashset treeset enumset

hashset 和 treeset 建議不儲存可變物件,因為會導致處理很複雜。

hashset類:

底層使用資料結構的

hash演算法

實現的,因此具有很好的訪問,查詢的效能。

hashset按照hash演算法來儲存集合的

hashset具有以下特點:

1、不能保證元素的排列順序,順序可能發生變化。

2、hashset(非同步) 不是同步的,如果多執行緒訪問乙個set集合,如果多執行緒訪問乙個hashset集合,如果有2條或者2條以上的執行緒同事修改了hashset集合時,必須通過**來保證同步。

3、集合元素的值可以是null

當向hashset集合中存入乙個元素時,會呼叫該物件的hashcode()方法得到該物件的hashcode值,然後根據該hashcode值來決定該物件在hashcode中儲存位置。如果兩個元素通過equals方法比較返回true,他們的hashcode()方法返回值不相同,hashcode將會把他們儲存在不同位置,也就可以新增成功。

簡單的來說,hashset集合判斷兩個元素相等的標準是兩個物件通過equals方法比較相等,並且兩個物件的hashcode()方法返回值也相同。

set t = new hashset();

student s = new student("1",1);

student s1 = new student("1",1);

t.add(s);

t.add(s1);

system.out.println(s.hashcode() == s1.hashcode());

//false

system.out.println(t.tostring());

//[student [name=1, age=1], student [name=1, age=1]]

string s = new string("a");

string s1 = new string("a");

t.add(s);

t.add(s1);

system.out.println(s.hashcode() == s1.hashcode());

//true

system.out.println(t.tostring());

//[a]

hashset訪問物件是hashcode來訪問的,hashcode()值相當於hashset的「索引」

hashset子類linkedhashset

treeset類

treeset 是乙個有序的集合,它的作用是提供有序的set集合。

treeset並不是根據插入順序排序的,而是根據元素的實際值來排序的。

treeset是採用紅黑樹的資料結構對元素排序的。

treeset排序方法:自然排序(預設)、定製排序

自然排序:treeset會呼叫compareto()方法來比較元素之間的大小關係,將集合元素進行公升序排序,這種方式被稱之為自然排序。

Set介面下的集合

hashset集合是無序 不可重複的,它的底層是使用了hashmap實現的,hashmap的底層是陣列和鍊錶實現的 無序指的是增加元素的順序和取出元素的順序不一定一致,不可重複是因為它使用了通過首先獲取hashcode值,再通過hash演算法將hashcode值算出索引,最後比較equals方法來決...

Collection集合類(Set介面)

set介面 extend collection介面 特點 1 不允許重複的元素 2 設有索引,沒有帶索引的方法,也不能進行普通for 3 是乙個元素的集合,訪問可能不一致 4 底層是雜湊表 查詢快 方法上和collection一致 實現類 hashset 由雜湊表構成 例 setset new ha...

集合4 集合 Collection介面 Set介面

儲存無序的 不可重複的資料 三種實現類 注 1.set介面中沒有額外定義新的方法,使用的都是collection中宣告過的方法 2.向set中新增的資料,其所在類一定要重寫hashcode 和equals 且重寫的hashcode 和equals 盡可能保持一致 相等的物件具有相等的雜湊碼 以has...