public static <T> void sort(List<T> list, String field, String order) {
Comparator<T> comparator = (obj1, obj2) -> {
try {
Field field1 = obj1.getClass().getDeclaredField(field);
field1.setAccessible(true);
Comparable fieldValue1 = (Comparable) field1.get(obj1);
Field field2 = obj2.getClass().getDeclaredField(field);
field2.setAccessible(true);
Comparable fieldValue2 = (Comparable) field2.get(obj2);
// Check for null values
if (fieldValue1 == null && fieldValue2 == null) {
return 0;
} else if (fieldValue1 == null) {
return 1; // obj1 with null field goes last
} else if (fieldValue2 == null) {
return -1; // obj2 with null field goes last
}
if (order.equalsIgnoreCase("asc")) {
return fieldValue1.compareTo(fieldValue2);
} else if (order.equalsIgnoreCase("desc")) {
return fieldValue2.compareTo(fieldValue1);
} else {
throw new IllegalArgumentException("Invalid order: " + order);
}
} catch (Exception e) {
throw new RuntimeException("Error accessing field " + field, e);
}
};
list.sort(comparator);
}
java根据字段名,排序规则对List进行排序
最新推荐文章于 2024-12-21 20:23:09 发布
该代码片段展示了如何使用Java泛型方法sort,根据对象中的指定字段按照升序或降序进行列表排序,处理了null值并支持自定义排序顺序。
2159

被折叠的 条评论
为什么被折叠?



