java - 排序工具类


public class SortUtil {

/**
* 对集合中是对象的排序
*
* @param list
* @param param 需要排序的参数名
* @param sort 排序字段 desc代表倒序
* @return
*/
public static List<?> listSort(List<?> list, String param, String sort) {
Collections.sort(list, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
try {
Field field1 = o1.getClass().getDeclaredField(param);
field1.setAccessible(true);
String o1s = field1.get(o1).toString();
Field field2 = o2.getClass().getDeclaredField(param);
field2.setAccessible(true);
String o2s = field2.get(o2).toString();
return sortAD(sort, o1s, o2s);
} catch (Exception e) {
e.printStackTrace();
}
return 0;

}
});
return list;
}

/**
* 对集合中是map的排序
*
* @param list
* @param param
* @param sort
* @return
*/
public static List<Map<String,Object>> MapSort(List<Map<String,Object>> list, String param, String sort) {
Collections.sort(list, new Comparator<Map>() {
@Override
public int compare(Map o1, Map o2) {
String o1s = o1.get(param).toString();
String o2s = o2.get(param).toString();
return sortAD(sort, o1s, o2s);
}
});
return list;
}

/**
* 确定排序顺序
*
* @param sort
* @param o1s
* @param o2s
* @return
*/
private static int sortAD(String sort, String o1s, String o2s) {
if (sort.equals("desc")) {
if (o1s.compareTo(o2s) < 0) {
return 1;
} else if (o1s.compareTo(o2s) == 0) {
return 0;
} else if (o1s.compareTo(o2s) > 0) {
return -1;
}
} else {
if (o1s.compareTo(o2s) < 0) {
return -1;
} else if (o1s.compareTo(o2s) == 0) {
return 0;
} else if (o1s.compareTo(o2s) > 0) {
return 1;
}
}
return 0;
}

}
 

 

posted @ 2021-01-26 16:14  快乐的张小凡  阅读(478)  评论(0编辑  收藏  举报