Set集合筆記

2021-07-04 14:47:58 字數 2110 閱讀 6329

set集合的元素是無序的,沒有索引,不能出現重複元素,所以它的子類也是一樣。

1.set集合有兩個最常見的子類hashset和treeset

hashset集合

底層是雜湊表。

物件進行比較時,底層用的是hashcode和equals方法

先用hashcode方法比較(比較雜湊值) 如果一樣在用equals方法比較

如果hashcode不一樣 就不再用equals方法比較

如果hashcode和equals方法比較之後都一樣,我們就視為同乙個元素,將不存入集合中!

//我們通過一段**來看看hashset集合的建立和使用

class demo01

cc("-----------");

}//因為我複寫hashcode方法是名字和年齡只要一樣就認為是同乙個人

//所以會再去呼叫equals方法,因為我的equals方法裡寫了輸出語句,只要呼叫就會輸出。(從而驗證底層是否真的會去呼叫equals方法)

//沒有去除重複元素之前有重複的就會去呼叫equals方法

//現在我用newset方法去除了重複元素 再去迭代就不會呼叫equals方法

//只會呼叫hashcode方法

newset(ha);//呼叫這個去除重複元素的函式

//迭代輸出

for (iterator it = ha.iterator();it.hasnext() ; )

}//列印函式

public

static

void

cc(object obj)

//定義乙個方法去除重複的元素

public

static hashset newset(hashset arr)

return demoarr;

}}class person//建立person物件

person(string name,int age)//建構函式

//獲取名字

public string getname()

//獲取年齡

public

intgetage()

//複寫equals方法

public boolean equals(object obj)

}

treeset集合

底層是二叉樹

物件需要比較時,需要實現 comparable 介面 重寫compareto方法

如果元素自身不具備比較性 或者是具備的比較性不是我們所需要的時候

就需要定義乙個比較器(comparator的子類物件裡重寫compare方法)

在建構函式treeset()中傳人乙個比較器。

如果元素自己具有比較性,而且又傳了比較器,系統會預設用比較器去比較!

如果比較器比較之後都一樣,我們就視為同乙個元素,將不存入集合中。

它還有乙個非常厲害的功能就是排序,他會根據比較器的對每個元素進行排序!

//我們通過一段**來看看treeset集合的建立和使用

class

demo01

}//列印函式

public

static

void sob(object obj)

}class

students

implements

comparable//實現comparable介面

else

return -1;

}students(string name,int age)//建構函式

//獲取名字

public string getname()

//獲取年齡

public

int getage()

}//自定義比較器//實現comparable介面 重寫compare方法

class

newtree

implements

comparator

return num;

}}

Set集合筆記

1.hashset 底層資料結構是雜湊表 如何來保證元素的唯一呢?倆個方法hashcode 和 equals 2.linkedhashset 底層的資料結構是鍊錶和雜湊表 鍊錶保證元素有序 有雜湊表保證元素的唯一 3.treeset 底層的資料結構是紅黑數 如何保證元素的排序?自然排序 比較排序 如...

python筆記 set集合

集合 set 是由乙個或數個形態各異的大小整體組成的,構成集合的事物或物件稱作元素或是成員。基本功能是進行成員關係測試和刪除重複元素。可以使用大括號 或者 set 函式建立集合,注意 建立乙個空集合必須用set 而不是 因為 是用來建立乙個空字典 set是乙個無序不重複元素值,作為乙個無序的集合,s...

集合,Set實現類筆記

回顧 list體系 棧 佇列 陣列 鍊錶 list體系的三個子類 arraylist 資料結構 陣列 vector 資料結構 陣列 特有功能 linkedlist 資料結構 鍊錶 特有功能 first last 面試題 模擬棧結構 泛型 明確資料型別的工作放在建立物件 或者 呼叫方法的時候 型別轉換...