使用TreeSet 的无参构造方法时注意

无参构造方法用的是自然排序,自然排序就是让所有元素所属的类实现Comparable接口,重写compareTo方法
Student.java

点击查看代码
import java.util.Comparator;
import java.util.Objects;

public  class Student implements Comparable<Student> {
    private String name;
    private Integer age;

    public Student(){}

    public Student(String name,Integer age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
   @Override
    public  int compareTo(Student s){
//        return 0;
        //升序
//        return 1;
        //降序
//        return -1
        //按年龄排序
        int num =  this.age - s.age;
        //年龄相同时,按姓名排序
       int num2=  num==0? this.name.compareTo(s.name): num;
        return num2;
    }
}
main
点击查看代码
public class Main {
    public static void main(String[] args) {
      TreeSet<Student> treeSet = new TreeSet<>();
      Student s1 = new Student("凉风",203);
      Student s2 = new Student("微风",2369);
      Student s3 = new Student("冬风",253);
      Student s4 = new Student("秋风",231);
      Student s5 = new Student("疾风",230);
      Student s6 = new Student("A风",230);

      treeSet.add(s1);
      treeSet.add(s2);
      treeSet.add(s3);
      treeSet.add(s4);
      treeSet.add(s5);
      treeSet.add(s6);

        for (Student student : treeSet) {
            System.out.println(student.getName()+","+student.getAge());
        }
    }
}
实现结果(先按年龄排,再按姓名排)
点击查看代码
凉风,203
A风,230
疾风,230
秋风,231
冬风,253
微风,2369
posted @ 2025-04-07 16:15  lfqyj  阅读(13)  评论(0)    收藏  举报