java多条件优先级排序 --------- Comparator
package com;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class ComparatorDemo {public List<Student> mList;public List<Comparator<Student>> mCmpList = new ArrayList<Comparator<Student>>();public ComparatorDemo(List<Student> list){mList = list;mCmpList.add(compareAgeASC);mCmpList.add(comparePointDESC);sort(mList, mCmpList);}public void sort(List<Student> list, final List<Comparator<Student>> comList) {if (comList == null)return;Comparator<Student> cmp = new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {for (Comparator<Student> comparator : comList) {if (comparator.compare(o1, o2) > 0) {return 1;} else if (comparator.compare(o1, o2) < 0) {return -1;}}return 0;}};Collections.sort(list, cmp);}private Comparator<Student> compareAgeASC = new Comparator<ComparatorDemo.Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.age > o2.age ? 1 : -1;}};private Comparator<Student> comparePointDESC = new Comparator<ComparatorDemo.Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.point < o2.point ? 1 : -1;}};/** * @author 80059130 * */class Student {public int age;public String name;public int point;}}
? 1、Comparator
??Collections.sort(List<T> list, Comparator<? super T> c) ;
? 2、T实现了Comparable 接口
? Collections.sort(List<T> list);