使用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;
}
}
点击查看代码
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