范例:
package com.wef.util; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.Collator; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Locale; import org.josql.Query; import org.josql.QueryExecutionException; import org.josql.QueryParseException; import org.josql.QueryResults; public class CommonSort { public static <T> void sortListChina(final List<T> lists,String sortName){ if(lists==null||lists.size()<=0){ return; } Field[] declaredFields = lists.get(0).getClass().getDeclaredFields(); String sortField="get"; boolean isExist=false; for (Field field : declaredFields) { String fieldName = field.getName(); if(fieldName.equalsIgnoreCase(sortName)){ isExist=true; sortField+=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1); } } if(!isExist){ throw new RuntimeException("排序字段不存在"); } final String tempField=sortField; Collections.sort(lists,new Comparator<Object>(){ Collator collator = Collator.getInstance(Locale.CHINA); @Override @SuppressWarnings("unchecked") public int compare(Object o1, Object o2) { // TODO Auto-generated method stub T t1 = (T) o1; T t2 = (T) o2; Method method1,method2; String name1="",name2=""; try { method1 = t1.getClass().getMethod(tempField, null); method2 = t2.getClass().getMethod(tempField, null); name1 = (String) method1.invoke(t1, null); name2 = (String) method2.invoke(t2, null); } catch (Exception e) { e.printStackTrace(); } if (name1 == null || name2 == null) { return -1; } int flag=collator.compare(name1, name2); return flag; } }); } /** * 内存数据排序 使用JoSQL * @param list * @param orderByString a asc,b desc * @return */ public static<T> List<T> sortList(List<T> list, String orderByString) { String josql = " select * from " + list.get(0).getClass().getName() + " order by "+ orderByString; Query query = new Query(); try { query.parse(josql); QueryResults results = query.execute(list); list = results.getResults(); } catch (QueryParseException e) { e.printStackTrace(); } catch (QueryExecutionException e) { e.printStackTrace(); } return list; } } |
转载于:https://my.oschina.net/u/3040777/blog/1625173