List集合排序工具类

来源:互联网 发布:java中怎么调用方法 编辑:程序博客网 时间:2024/06/16 13:31

在项目中有时候我们需要对list里边的数据进行排序。我们一般常用的就是对model排序和map的排序。

package com.creditease.comp.information.util;import java.util.Collections;import java.util.Comparator;import java.util.Date;import java.util.List;import java.util.Map;import java.lang.reflect.Method;/*** @author wangdingfeng:* @ClassName ListSortUtil* @Description: List 按照指定字段排序* @date 创建时间:2017年6月30日 下午3:11:41* 类说明*/public class ListSortUtil<T> {/** * @param targetList 目标排序List * @param sortField 排序字段(实体类属性名) * @param sortMode 排序方式(asc or  desc) */@SuppressWarnings({ "unchecked", "rawtypes" })public void sortModel(List<T> targetList, final String sortField, final String sortMode) {Collections.sort(targetList, new Comparator() {public int compare(Object obj1, Object obj2) { int retVal = 0;try {//首字母转大写String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w",""); String methodStr="get"+newStr;Method method1 = ((T)obj1).getClass().getMethod(methodStr, null);Method method2 = ((T)obj2).getClass().getMethod(methodStr, null);if (sortMode != null && "desc".equals(sortMode)) {retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString()); // 倒序} else {retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString()); // 正序}} catch (Exception e) {throw new RuntimeException();}return retVal;}});}/** * Map排序 按照时间字段排序 * @param targetList * @param sortField * @param sortMode 排序方式(asc or  desc) */public void sortMap(List<Map<String,Object>> targetList,final String sortField,final String sortMode){   Collections.sort(targetList, new Comparator<Map<String,Object>>() {@Overridepublic int compare(Map<String, Object> o1, Map<String, Object> o2) {    //进行判断int retVal = 0;try {if(sortMode != null && "desc".equals(sortMode)){retVal= ((String)o2.get(sortField).toString()).compareTo((String)o1.get(sortField).toString());}else{retVal= ((String)o1.get(sortField).toString()).compareTo((String)o2.get(sortField).toString());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return retVal;}});}}


原创粉丝点击