Java TreeSet的使用,对学生排序,首先安装age排序,其次按照name排序。
自定义Comparator比较器。在用new创建TreeSet时,要传入一个比较器的对象。
代码如下:
import java.util.Comparator;
import java.util.TreeSet;
public class Student {
private int age; //优先按照age排序
private String name; //age相同按照name排序
@Override
public String toString() {
return "[age:" + age + ", name:" + name + "]";
}
Student(int age,String name){
this.age = age;
this.name = name;
}
public static class stuComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
if(o1.age<o2.age){
return -1;
}else if(o1.age>o2.age){
return 1;
}else{
return o1.name.compareTo(o2.name);
}
}
}
public static void main(String[] args) {
Student s5 = new Student(1,"a");
Student s4 = new Student(1,"c");
Student s3 = new Student(2,"a");
Student s2 = new Student(3,"a");
Student s1 = new Student(3,"d");
TreeSet<Student> sts = new TreeSet<Student>(new Student.stuComparator());//传入比较器对象
sts.add(s1);sts.add(s2);sts.add(s3);sts.add(s4);sts.add(s5);
System.out.println(sts);
}
}