集合类List存放的数据,默认是按照放入时的顺序存放的
比如依次放入a、c、b,则取得时候,则也是a、c、b的顺序
实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序
案例:
Person:
public class Person { private String name; private Integer age; public Person(String name, Integer age) { super(); 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; } }
ListSortTest:
public class ListSortTest{ public static void main(String[] args) { Person p1=new Person("a",20); Person p2=new Person("c",20); Person p3=new Person("b",20); List<Person> list=new ArrayList<Person>(); list.add(p1); list.add(p2); list.add(p3); Collections.sort(list, new java.util.Comparator<Person>() { @Override public int compare(Person o1, Person o2) { if(o1.getAge()>o2.getAge()){ return 1; }else if(o1.getAge()<o2.getAge()){ return -1; }else{ if(o1.getName().compareTo(o2.getName())>0){ return 1; }else{ return -1; } } } }); for(int i=0;i<list.size();i++){ System.out.print(list.get(i).getName()+" "); } } }
未调用自定义排序时输出结果:a c b
通过自定义排序后输出结果为:a b c