物件重複是指物件裡面的變數的值都相等,並不定是位址。list集合儲存的型別是基礎型別還比較好辦,直接把list集合轉換成set集合就會自動去除。
當set集合儲存的是物件型別時,需要在物件的實體類裡面重寫public boolean equals(object obj) {} 和 public int hashcode() {} 兩個方法。
/**
* 返回值代表容器中的具體位置的座標
*/@override
public int hashcode()
public boolean equals(object obj)
return false;
}/**
* 正數:後面的o比當前(this)大
* * 0代表相等
*/
@override
public int compareto(person o)
return num;
}
(一)hashset的底層資料結構是雜湊表
(二)確保元素唯一性的兩個方法,hashcode()和equals()方法。
(三)當呼叫add()方法向集合中存入物件的時候,先比較此物件與原有物件的雜湊值有沒有一樣的,如果都不一樣就直接存入;如果有與之相同的雜湊值,則要繼續比較這兩個物件是否為同乙個物件,此時就要呼叫物件的equals()方法了。
結論:只有hashcode的至相同時,才會呼叫equals()方法。
自然排序(comparable):
使得新增的元素自身具備排序規則,這種排序規則又被稱為自然排序
比較器排序(comparator):
作用:使得容器具有比較性
例舉比較器排序:
/**
* 定義乙個比較person的比較器
* 規則:先按姓氏、再按年齡
* 新主要條件、在次要條件;如果不按照這個規則來,那麼資料會丟失
* @author administrator
* */
class presoncomp implements comparator
return num; }
}
泛型的作用:
1.將執行時的異常轉移到編譯器
2.提公升了**的健壯性
例:已經將編譯器錯誤的錯誤注釋了
public class fanxindemo
} }}
API集合框架 Set集合之HashSet
set集合中不允許有相同的元素,並且取出集合中的元素的方式只有一種 迭代器 雜湊表 用於儲存元素與雜湊值對應的關係的容器 一.雜湊表特點 二.雜湊演算法原理 hashcode方法 hash element 因此從這裡可以看出來當我們從雜湊表中取出元素的時候,會發現與我們儲存元素的順序不一樣 三.雜湊...
集合框架Set
1 hashset雜湊表儲存底層 2 list與set判斷重複物件的區別 3 集合框架treeset 的自然排序 比較器排序 一般來說 set是無序的 無下標 但是jdk1.8版本已經可以排序 1 hashset雜湊表儲存底層 set 會去除重複 資料結構是雜湊表 hashseths new has...
集合框架Set
元素是無序 存入和取出的順序不一定一致 元素不可以重複 hashset雜湊表儲存 底層資料結構是雜湊表 1.1hashset的元素不可重複 hashset元素是不可重複的,針對於基本資料型別以及string,引用資料型別 物件 去重需要重寫hashcode方法以及equals方法 論證 1.2has...