public static void sortByField(List<User> list, String fieldName) {
list.sort((u1, u2) -> {
try {
Object value1 = User.class.getDeclaredMethod("get" + capitalize(fieldName)).invoke(u1);
Object value2 = User.class.getDeclaredMethod("get" + capitalize(fieldName)).invoke(u2);
if (value1 instanceof Comparable && value2 instanceof Comparable) {
return ((Comparable) value1).compareTo(value2);
} else {
throw new IllegalArgumentException("Field value is not Comparable");
}
} catch (Exception e) {
throw new RuntimeException("Error during sorting", e);
}
});
}
private static String capitalize(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
标签:Comparable,value1,return,String,对类,value2,str,排序,属性
From: https://www.cnblogs.com/yifan1028/p/18314869