场景1. 元素实现Comparable接口并重写compareTo方法
# 基本数据类型
TreeSet<Integer> ts = new TreeSet<>();
# 自定义类型
class Student implements Comparable<Student> {
@Override
public int compareTo(Student s) {
...
}
}
TreeSet<Student> ts = new TreeSet<>();
场景2. 元素未实现Comparable接口
# 方式1:传统方式
public class MyCompare implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
}
TreeSet<Student> ts = new TreeSet<>(new MyCompare());
TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
# 方式2:Lamda表达式
TreeSet<Student> ts = new TreeSet<>((o1, o2) -> o1.getAge() - o2.getAge());
TreeSet<Student> ts = new TreeSet<>(Comparator.comparingInt(Student::getAge));