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比較方法2: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 }
public比較方法3: 當年齡相等的時候,比較其他屬性。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)
}
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比較方法2: 使用匿名內部類public
class
day1
1415}16
class lancomparator implements comparator
2324 }
publicclass
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 因此從這裡可以看出來當我們從雜湊表中取出元素的時候,會發現與我們儲存元素的順序不一樣 三.雜湊...