java中List按照指定字段排序工具类

来源:互联网 发布:windows10装mac虚拟机 编辑:程序博客网 时间:2024/06/05 00:38
package com.yumi.mibao.util;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** *  List按照指定字段排序工具类 * * @param <T> */public class ListSortUtil<T> {/** * @param targetList 目标排序List * @param sortField 排序字段(实体类属性名) * @param sortMode 排序方式(asc or  desc) */@SuppressWarnings({ "unchecked", "rawtypes" })public void sort(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;}});}}

将你需要排序的对象代替T对象即可,如:
CommonUtil<MibaoKeywordsTagInfo> cu = new CommonUtil();//执行具体查询List<MibaoKeywordsTagInfo> list = query.list();//根据指定排序字段重新排序cu.doSort(list, "keywordsTagOrder", "asc");



0 0
原创粉丝点击