集合框架之Set TreeSet

2022-09-13 09:54:10 字數 2411 閱讀 1532

treeset是set介面的實現類,底層資料結構是二叉樹。

treeset的儲存方式按照一定的規則。儲存規則讓資料表現出自然順序。

新增乙個新元素t的儲存步驟:

[1] 如果集合無元素,t直接加入;如果集合有元素,t和根節點比較;

[2] 如果t小於根節點;把t放到根節點的左子樹上;重複1-3步驟

[3] t大於根節點;把t放到根節點的右子樹上;重複1-3步驟

輸出時按照一定的規則:左子樹->根節點->右子樹

根據treeset的工作原理,向treeset新增自定義元素?

向treeset中新增元素時,一定要提供比較策略,否則會出現classcastexception。

比較策略分為兩種:  內部比較器和外部比較器。

在自定義物件,實現comparable介面,並實現compareto方法。通過指定的方法策略,完成物件元素比較,再進行儲存。

比較方法1:

1

public

class student implements comparable910

public

void setid(int

id)

1314

public

string getname()

1718

public

void

setname(string name)

2122

public

intgetage()

2526

public

void setage(int

age)

2930

@override

31public

intcompareto(student o) else

if(this.getage()==o.getage())else

3940}41

4243 }

比較方法2:

public

class student implements comparable

public

void setid(int

id)

public

string getname()

public

void

setname(string name)

public

intgetage()

public

void setage(int

age)

@override

public

intcompareto(student o)

}

比較方法3:   當年齡相等的時候,比較其他屬性。

1

public

class student implements comparable910

public

void setid(int

id)

1314

public

string getname()

1718

public

void

setname(string name)

2122

public

intgetage()

2526

public

void setage(int

age)

2930

@override

31public

intcompareto(student o) else

if(this.getage()==o.getage())else

3940

}

41 }

當實際開發過程中,不知道新增元素的源**,無權修改別人的**,此時可以使用外部比較器。

比較方法1:使用外部類

1

public

class

day1

1415}16

class lancomparator implements comparator

2324 }

比較方法2:  使用匿名內部類

public

class

day1

});set.add("zhangsan");

set.add("lisi");

set.add("wangwu");

set.add("lisi");

system.out.println(set);}}

集合框架之 set集合

物件重複是指物件裡面的變數的值都相等,並不定是位址。list集合儲存的型別是基礎型別還比較好辦,直接把list集合轉換成set集合就會自動去除。當set集合儲存的是物件型別時,需要在物件的實體類裡面重寫public boolean equals object obj 和 public int has...

集合框架之List

collection 為頂層集合介面,其下面分有list和set介面。list集合的特點 元素有序 可重複。可以通過索引index來增加 刪除元素。增 add addall add index,某元素 add index,某集合 刪 clear remove removeall remove ind...

API集合框架 Set集合之HashSet

set集合中不允許有相同的元素,並且取出集合中的元素的方式只有一種 迭代器 雜湊表 用於儲存元素與雜湊值對應的關係的容器 一.雜湊表特點 二.雜湊演算法原理 hashcode方法 hash element 因此從這裡可以看出來當我們從雜湊表中取出元素的時候,會發現與我們儲存元素的順序不一樣 三.雜湊...