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);


相关文章
|
2月前
|
算法 Java
在排序数组中查找元素的第一个和最后一个位置(Java详解)
在排序数组中查找元素的第一个和最后一个位置(Java详解)
39 0
|
3月前
|
Java
彻底搞懂Java中的Comparable和Comparator
彻底搞懂Java中的Comparable和Comparator
58 0
|
1月前
|
Java
【Java】通过Comparator比较器的方式给对象数组排序
【Java】通过Comparator比较器的方式给对象数组排序
9 0
|
1月前
|
Java
如何使用 Java 8 进行字符串排序?
【2月更文挑战第21天】
73 3
|
2月前
|
Java
Java排序
【2月更文挑战第7天】【2月更文挑战第17篇】List对象集合自定义排序,列出了以前的用法以及新用法。
27 0
|
2月前
|
存储 Java
Java TreeMap:基于红黑树的排序映射解析
Java TreeMap:基于红黑树的排序映射解析
|
2月前
|
安全 Java
Java TreeSet:基于红黑树的排序集合解析
Java TreeSet:基于红黑树的排序集合解析
|
2月前
|
Java
Java对list集合元素进行排序的几种方式
Java对list集合元素进行排序的几种方式
22 0
|
2月前
|
Java
java 实现Comparable接口排序,升序、降序、倒叙
java 实现Comparable接口排序,升序、降序、倒叙
20 0
|
2月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段3、sort自然排序
Java数组全套深入探究——进阶知识阶段3、sort自然排序
10 0