Java类的排序无法直接像其他普通变量一样通过集合类中的办法Collection.sort(变量对象)排序,这时候想要对类中按照某个条件进行排序的话,则需要重写public int compareTo(类 类名){}来实现。
一下是一个实例:
//下面是一个Person类,要求按照year进行排序,
//需要先implements接口Comparable
public class Person implements Comparable{
private String name;
private int year;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int year) {
this.name = name;
this.year = year;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
@Override
public int compareTo(Person o) {
return o.getYear() - this.getYear();//按升序排序
//按降序排序为:return this.getYear() - o.getYear();
}
@Override
public String toString() {
return this.getName() + " " + this.getYear();
}
}
//一下代码是对上面进行实现并进行排序
public class Main{
public Main() {
// TODO Auto-generated constructor stub
}
public ArrayList<Person> collection_create() {
ArrayList<Person> person = new ArrayList<>();
person.add(new Person("张军", 29));
person.add(new Person("李阳", 20));
person.add(new Person("晓红", 26));
return person;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Main main = new Main();
ArrayList<Person> collect = new ArrayList<>();
collect = main.collection_create();
System.out.print(collect);
Collections.sort(collect);
System.out.print(collect);
}
}
运行后: