集合框架Set

2021-09-24 05:51:41 字數 1744 閱讀 7754

元素是無序(存入和取出的順序不一定一致),元素不可以重複;

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 首先介紹一下...