Set集合類 注意

2021-04-12 21:35:41 字數 671 閱讀 2686

customer類的equals()方法

public boolean equals(object o)  

//向hashset中加入兩個customer物件

set set new hashset();

customer customer1 = new customer("jim",18);

customer customer2 = new customer("jim",18);

set.add(customer1);

set.add(customer2);

sysem.out.println(set.size());

//實際輸出結果為2

由於customer1.equls(customer2)的比較結果為true,按理說hashset粉應該把customer1加入集合中,但實際上以上程式的輸出結果為2,表明集合中加入了兩個物件.出現這一非正常現象的原因在於customer1和customer2的雜湊碼不一樣,因此hashset為customer1和customer2計算出不同的存放位置,於是把它們存放在集合中的不同地方.

為了保證hashset正常工作,如果customer類覆蓋了equals()方法,也應該覆蓋hashcode()方法,並且保證兩個相等的customer物件的雜湊碼也一樣

pubic int hashcode()

集合,Set實現類筆記

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

Collection集合類(Set介面)

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

集合Set類的功能 2

基於鍊錶的方式來組織集合元素,集合類的操作與上一次作業一樣,但把通過函式呼叫方式實現的集合交 並 差運算通過第四章的 運算子過載實現,以統一程式設計風格。include using namespace std struct node class set 從頭結點開始遍歷輸出 out 返回第乙個引數 ...