元素是無序(存入和取出的順序不一定一致),元素不可以重複;
hashset雜湊表儲存
底層資料結構是雜湊表
1.1hashset的元素不可重複
hashset元素是不可重複的,針對於基本資料型別以及string,引用資料型別(物件)去重需要重寫hashcode方法以及equals方法
論證
1.2hashset如何進行物件的去重,我們首先要了解hashset雜湊表儲存
1.3物件的去重方法
public class setdemo
}class person implements comparable
public void setname(string name)
public int getage()
public void setage(int age)
public person(string name, int age)
public person()
@override
public string tostring()
@override
public int hashcode()
@override
public boolean equals(object obj)
return false;
}/**
* 本方法用來定義排序的規則
* 正數:代表後面的比前面的大
* 0:後面與前面的相等
* 負數:後面和前面的小
* * this代表還沒有存放到容器中的物件
* o代表已經在容器中的物件
* @param o
* @return
*/@override
public int compareto(person o)
return num;
}}
返回值定死後樣這些物件就具有相同的hashcode值,所以每次增加都會呼叫equals方法
結果如下:
返回值不定義成死的了,給他定義活的,這樣的話只要具有相同屬性的物件才會有相同的hashcode值,才會像一開始所說的呼叫equals方法
如圖所示:
treeset集合把這些值按從小到大的順序排列了,這都是因為它的資料型別決定的。
如圖所示:
解釋:以21為頂點,依次按規律,小的放在左邊,大的放在右邊,依次編列,再按箭頭順序排列,從而形成這樣的資料結構
集合框架Set
1 hashset雜湊表儲存底層 2 list與set判斷重複物件的區別 3 集合框架treeset 的自然排序 比較器排序 一般來說 set是無序的 無下標 但是jdk1.8版本已經可以排序 1 hashset雜湊表儲存底層 set 會去除重複 資料結構是雜湊表 hashseths new has...
集合框架之 set集合
物件重複是指物件裡面的變數的值都相等,並不定是位址。list集合儲存的型別是基礎型別還比較好辦,直接把list集合轉換成set集合就會自動去除。當set集合儲存的是物件型別時,需要在物件的實體類裡面重寫public boolean equals object obj 和 public int has...
集合框架 List與Set
所有的集合框架並不存放真正的物件,而是持有物件的引用 list與set都繼承自collection list的實現類 arraylist,linklist,vector set的實現類 hashset,linkedhashset,sortset 介面 treeset 實現sortset 首先介紹一下...