首先说下需求,在开发中会遇到对List<Object>进行排序,这个也可以在数据库里面查询排序出来,但是有的时候会在查出来之后做一些逻辑处理然后排序,所有就要用到对象排序。
- 首先创建一个类实现Comparator<T> 接口,并重写int compare(T t1, T t2)接口
-
import java.util.Comparator;
/**
* Created by wanghaiyang on 2016/4/11.
*/
public class ComparatorUtil implements Comparator<ApiCounterResponse> {
//倒序排列即从大到小,若需要从小到大修改返回值1 和 -1
public int compare(ApiCounterResponse o1, ApiCounterResponse o2) {
double tempResult1 = o1.getTempResult();
double tempResult2 = o2.getTempResult();
if (tempResult1 > tempResult2) {
return -1;
} else if (tempResult1 < tempResult2) {
return 1;
} else {
return 0;
}
}
}
- new一个实现类对象,传地参数需要排序的List对象和Comparator的实现类
-
public static void main(String[] args) { List<ApiCounterResponse> listCounter = new ArrayList<ApiCounterResponse>(); for (int i = 0; i < 10; i ++) { ApiCounterResponse api = new ApiCounterResponse(); api.setMethodId(1L + i); api.setTempResult(2.34 + i); listCounter.add(api); System.out.println(listCounter.get(i).getMethodId()); } //在这里进行排序(具体实现看源代码) Comparator comp = new ComparatorUtil(); Collections.sort(listCounter, comp); for (int i = 0; i < listCounter.size(); i++) { System.out.println(listCounter.get(i).getMethodId()); } }