Java TreeSet学习笔记

跟C++中的set差不多,主要在比较方法重写上不太一样

第一种排序方式

Javabean类实现Comparable接口指定比较规则

1
2
3
4
5
6
public class Student implements Comparable<Student> {
@Override
public int compareTo(Student o) {
return this.getAge() - o.getAge();//升序
}
}

第二种排序方式

在创建TreeSet对象时传入一个比较器(实现了Comparator接口的类)

1
2
3
4
5
6
TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() -o2.length();//长度升序
}
});

这个接口是一个函数式接口,可以用lambda

1
2
3
TreeSet<String> ts = new TreeSet<>((o1, o2) -> {
return o1.length() - o2.length();
});
img_show