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>() {
			@Override
			public 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>() {

		@Override
		public int compare(Student o1, Student o2) {
			return o1.age > o2.age ? 1 : -1;
		}
	};

	private Comparator<Student> comparePointDESC = new Comparator<ComparatorDemo.Student>() {

		@Override
		public 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);


上一篇:SAP Spartacus popover Component css 的重用设计


下一篇:zookeeper(二) --- 基本概念