生活随笔
收集整理的這篇文章主要介紹了
单列集合Set的实现类TreeSet
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Set接口 [Collection】的子類
TreeSet
a.特點【無序,不可重復,查詢快,可自動排序】,但需要指定排序規則,API中有一些類已經實現了Comparable接口],給出了默認排序規則,如:Integer:數值大小[升序] String:字典順序等
b.指定排序規則方法:
一. 重寫自然排序方法[compareTo]:
在對象類中實現implements Comparable接口<>
public class Demo1 {public static void main(String
[] args
) {TreeSet
<Student> ts
= new TreeSet<>();ts
.add(new Student("zhangsan", 20));ts
.add(new Student("lisi", 21));ts
.add(new Student("wangwu", 22));ts
.add(new Student("zhaoliu", 22));ts
.add(new Student("zhaoqi", 22));for (Student student
: ts
) {System
.out
.println(student
);}}
}class Student implements Comparable<Student> {private String name
;private int age
;public Student(String name
, int age
) {this.name
= name
;this.age
= age
;}public Student() {}public String
getName() {return name
;}public void setName(String name
) { this.name
= name
; }public int getAge() {return age
;}public void setAge(int age
) { this.age
= age
;}@Overridepublic String
toString() {return "Student{" +"name='" + name
+ '\'' +", age=" + age
+'}';}@Overridepublic int compareTo(Student o
) {int result
= this.getAge() - o
.getAge();result
= result
==0 ? this.getName().compareTo(o
.getName()) :result
;return result
;}
}打印結果
:
----------------------------------------------------------
Student
{name
='zhangsan', age
=20}
Student
{name
='lisi', age
=21}
Student
{name
='wangwu', age
=22}
Student
{name
='zhaoliu', age
=22}
Student
{name
='zhaoqi', age
=22}
**二.**自定義比較器:
在創建容器時使用有參構造,加入比接口對象new Comparator()
public class Demo2 {public static void main(String
[] args
) {TreeSet
<Student> ts
= new TreeSet<>(new Comparator<Student>() {@Overridepublic int compare(Student1 o1
, Student1 o2
) {int result
= o1
.getAge() - o2
.getAge();result
=result
==0?o1
.getName().compareTo(o2
.getName()):result
;return result
;}});ts
.add(new Student("zhangsan", 20));ts
.add(new Student("lisi", 21));ts
.add(new Student("wangwu", 22));ts
.add(new Student("zhaoliu", 22));ts
.add(new Student("zhaoqi", 22));for (Student student
: ts
) {System
.out
.println(student
);}}
}打印結果:
------------------------------------------------------------
Student
{name
='zhangsan', age
=20}
Student
{name
='lisi', age
=21}
Student
{name
='wangwu', age
=22}
Student
{name
='zhaoliu', age
=22}
Student
{name
='zhaoqi', age
=22}
**三.**TreeSet底層實現思想【紅黑樹】
因為紅黑樹是有序的,所有TreeSet有排序功能
總結
以上是生活随笔為你收集整理的单列集合Set的实现类TreeSet的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。