public class SortUtil {
private final static String SORT_ASC = "ASC";
private final static String SORT_DESC = "DESC";
/**
* 集合排序
* @param list 需排序的集合
* @param property 元素名称
* @param sort 排序方式
* @param <T>
* @return
*/
public static <T> void sortList(List<T> list, String property, String sort) {
Collections.sort(list, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
try {
Field field1 = o1.getClass().getDeclaredField(property);
field1.setAccessible(true);
Integer i1 = Integer.parseInt(getNumber(field1.get(o1).toString()));
Field field2 = o2.getClass().getDeclaredField(property);
field2.setAccessible(true);
Integer i2 = Integer.parseInt(getNumber(field2.get(o2).toString()));
//降序
if (sort.toUpperCase().equals(SORT_DESC)) {
return i2.compareTo(i1);
}
//升序
if (sort.toUpperCase().equals(SORT_ASC)) {
return i1.compareTo(i2);
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
});
}
/**
* 提取数字
*
* @param str
* @return
*/
public static String getNumber(String str) {
String regEx = "[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
}
JAVA中 List集合如何按某个字段升序或降序排序
最新推荐文章于 2024-07-28 02:41:36 发布
本文介绍了一个Java工具类SortUtil,它提供了一种方法对集合进行排序,通过指定元素的属性名和排序方式(升序或降序)。核心是使用Comparator接口实现了比较逻辑。getNumber方法用于提取字符串中的数字以便进行数值比较。
摘要由CSDN通过智能技术生成