java_List_排序
当年收藏的一个List 排序的方法,不过现在已经快忘了怎么使用了
/**
* List 排序
* @param sortOrder 排序方式
* @param sortName 排序名称
* @param List<Map<String, Object>>
* @return
*/
private static List < Map < String, Object >> sortList(final String sortOrder, final String sortName, List < Map < String, Object >> list) {
if (StringUtils.isBlank(sortName)) {
return list;
}
Collections.sort(list, new Comparator < Map < String, Object >> () {
public int compare(Map < String, Object > o1, Map < String, Object > o2) {
if ("desc".equals(sortOrder)) {
//降序
return o2.get(sortName).toString().toUpperCase().compareTo(o1.get(sortName).toString().toUpperCase());
} else {
//
return o1.get(sortName).toString().toUpperCase().compareTo(o2.get(sortName).toString().toUpperCase());
}
}
});
return list;
}
/**
*
* @param List<?> ?:实体名称
* @param method: 实体中get方法名称
* @param sort :排序
*/
public void Sort(List < Class > list, final String method, final String sort) {
Collections.sort(list, new Comparator < Class > () {
public int compare(Object obja, Object objb) {
int ret = 0;
try {
Method m1 = ((Class) obja).getClass().getMethod(method);
Method m2 = ((Class) objb).getClass().getMethod(method);
if (sort != null && "desc".equals(sort)) // 倒序
ret = m2.invoke(((Class) objb)).toString().compareTo(m1.invoke(((Class) obja)).toString());
else
// 正序
ret = m1.invoke(((Class) obja)).toString().compareTo(m2.invoke(((Class) objb)).toString());
} catch (NoSuchMethodException ne) {
ne.printStackTrace();
} catch (IllegalAccessException ie) {
ie.printStackTrace();
} catch (InvocationTargetException it) {
it.printStackTrace();
}
return ret;
}
});
}