对集合中的对象排序有两种方法

  1. 对象实现Comparable方法,并调用Collections.sort(List<Person))方法排序
  2. 为某个类型创建一个Comparator对比器,实现compare方法,并调用Collections.sort()方法排序

Collections.sort()方法默认是升序,如果想降序,compare,compareTo方法中返回 1,-1的顺序调整一下即可

import java.util.*;

public class test {
    public static void main(String[] args) {
        List<Person> persons =new ArrayList<Person>();
        //对集合对象进行排序
        persons.add(new Person(4));
        persons.add(new Person(1));
        persons.add(new Person(2));
        persons.add(new Person(2));
        persons.add(new Person(3));
        persons.add(new Person(1));
        
        PersonComparator comparator=new PersonComparator();
        Collections.sort(persons, comparator); // 为person类创建一个对比器,安 PersonComparator 对比器进行排序
        
        Collections.sort(persons);   // 对实现了Comparable 接口的对象排序

        if(persons !=null&& persons.size()>0){
            for(Person person : persons){
                System.out.println(person.age);
            }
        }
    }
}

class Person implements Comparable<Person>{
    public int age;
    public Person(int a){
        age = a;
    }

    /**
     * this < o2 : return -1
     * this > o2 : return 1
     * this = o2 : return 0
     *
     * @param o2
     * @return
     */
    public int compareTo(Person o2) {

        if (age < o2.age)
            return -1;
        else if (age > o2.age)
            return 1;
        else
            return 0;
    }
}

class PersonComparator implements Comparator<Person>{

    /**
     * o1 < o2 : return -1
     * o1 > o2 : return 1
     * o1 = o2 : return 0
     *
     * @param o1
     * @param o2
     * @return
     */
    public int compare(Person o1, Person o2) {
        if (o1.age < o2.age)
            return -1;
        else if (o1.age > o2.age)
            return 1;
        else
            return 0;
    }
}