set集合的元素是無序的,沒有索引,不能出現重複元素,所以它的子類也是一樣。
1.set集合有兩個最常見的子類hashset和treeset
hashset集合
底層是雜湊表。
物件進行比較時,底層用的是hashcode和equals方法
先用hashcode方法比較(比較雜湊值) 如果一樣在用equals方法比較
如果hashcode不一樣 就不再用equals方法比較
如果hashcode和equals方法比較之後都一樣,我們就視為同乙個元素,將不存入集合中!
treeset集合//我們通過一段**來看看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)
}
底層是二叉樹
物件需要比較時,需要實現 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 面試題 模擬棧結構 泛型 明確資料型別的工作放在建立物件 或者 呼叫方法的時候 型別轉換...