* 排序集合
*
* @param list 要排序的集合
* @param orderBy 根据哪一个字段排序
* @param sort asc desc
*/
public static <T> void sortedByParam(List<T> list, String orderBy, String sort) {
if (StringUtils.isEmpty(orderBy)) {
return;
}
String methodName = "get" + orderBy.toUpperCase().substring(0, 1).toUpperCase() + orderBy.substring(1);
list.sort((o1, o2) -> {
int ret = 0;
try {
Comparable rs1 = (Comparable) MethodUtils.invokeMethod(o1, methodName);
Comparable rs2 = (Comparable) MethodUtils.invokeMethod(o2, methodName);
if (rs1 != null && rs2 != null) {
ret = "desc".equals(sort) ? rs2.compareTo(rs1) : rs1.compareTo(rs2);
}
} catch (ReflectiveOperationException e) {
log.error("反射错误:sortedByParam-orderBy:[{}],sortedByParam-sort:[{}],orderSelect --> [{}],list-->[{}]", orderBy, sort, list, e);
ret = 0;
}
return ret;
});
}```