对于一个简单的Student类中,存储到TreeSet集合中按照Id大小排序
一.使用自然排序:定义自己的排序规则,重写compareTo方法即可
Student类:
public class Student implements Comparable<Student> {
private int id;
public Student(int id){
this.id = id;
}
public int getId() {
return id;
}
@Override
public String toString() {
return "Student [id=" + id + "]";
}
@Override
public int compareTo(Student s) {
if (s.getId() < this.id) {
return -1;
}
else {
return 1;
}
}
}
测试类:
public class TestCompare {
public static void main(String[] args) {
TreeSet<Student> set = new TreeSet<>();
set.add(new Student(6));
set.add(new Student(7));
set.add(new Student(5));**加粗样式**
set.add(new Student(1));
for (Student student : set) {
System.out.println(student);
}
}
}
结果:
二.使用比较器排序:用匿名内部类的方式实现Comparator接口,通过实现其中的compare方法,对其返回值进行处理,从而实现排序的功能
public class TestComparator {
public static void main(String[] args) {
TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getId() - s1.getId();
}
});
set.add(new Student(6));
set.add(new Student(7));
set.add(new Student(5));
set.add(new Student(1));
for (Student student : set) {
System.out.println(student);
}
}
}
注意:如果bean类没有实现Compare接口或者Comparator接口,然后使用TreeSet来存储数据,则会报错: