public static void sort(String orderColumn, String orderType, Class clazz, List list) {
if (list == null || list.isEmpty()) {
return;
}
try {
Field field = clazz.getDeclaredField(orderColumn);
if (Arrays.stream(field.getType().getInterfaces()).noneMatch(o -> o == Comparable.class)) {
return;
}
field.setAccessible(true);
list.sort((o1, o2) -> {
try {
Object v1 = field.get(o1);
Object v2 = field.get(o2);
if (v1 == null && v2 == null) {
return 0;
}
if (v1 == null) {
return 1;
}
if (v2 == null) {
return -1;
}
if ("asc".equals(orderType)) {
return ((Comparable)v1).compareTo(v2);
}
if ("desc".equals(orderType)) {
return ((Comparable)v2).compareTo(v1);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return 0;
});
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
指定Java列表字段进行排序
最新推荐文章于 2024-07-19 10:18:59 发布
该代码段提供了一个公共静态方法,用于按指定字段和排序类型对对象列表进行排序。它首先检查列表是否为空,然后获取类的指定字段,并确保该字段的类型实现了Comparable接口。接着,根据升序或降序要求进行比较并排序。如果遇到非法访问或找不到字段的情况,会打印堆栈跟踪信息。
摘要由CSDN通过智能技术生成