set排序:Comparable接口实现。
对要排序的对象模型实现Comparable接口,重写compareTo(),返回要比较的元素的比较值。
抽象封装Student类:
public class Student implements Comparable<Student>{
private int age;
private String name;
public Student(int age,String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
//在student对象上实现Comparable接口,重写里面的比较方法
@Override
public int compareTo(Student s) {
//return this.age - s.age;//按照年龄升序排列
//return s.age - this.age;//按照年龄降序排列
//return this.name.compareTo(s.name);//按照姓名升序排列
return s.name.compareTo(this.name);//按照姓名降序排列
}
}
使用:
Set<Student> st = new TreeSet<Student>();
st.add(new Student(2,"aaa"));
st.add(new Student(20,"raa"));
st.add(new Student(22,"daa"));
st.add(new Student(42,"6aa"));
st.add(new Student(29,"baa"));
st.add(new Student(62,"jaa"));
st.add(new Student(32,"oaa"));
st.add(new Student(22,"paa"));
for(Student st0:st) {
System.out.println(st0.getAge() + "--" + st0.getName());
}
结果:降序排列
20–raa
22–paa
32–oaa
62–jaa
22–daa
29–baa
2–aaa
42–6aa