public class CommonTest {
public static void main(String[] args) {
User one = new User();
one.setAge(1);
User two = new User();
two.setAge(3);
User three = new User();
three.setAge(2);
List<User> ulist = new ArrayList();
ulist.add(one);
ulist.add(two);
ulist.add(three);
CommonTest.sort(ulist,"Age");
}
// 倒排
public static void sort(List list, String field){
if (list == null || list.size() == 0) return;
list.sort((o1, o2) -> {
try {
Method getter1 = o1.getClass().getDeclaredMethod("get" + field);
Object val1 = getter1.invoke(o1);
Method getter2 = o2.getClass().getDeclaredMethod("get" + field);
Object val2 = getter2.invoke(o2);
if (val1 == null) {
if (val2 == null) {
return 0;
} else {
return -1;
}
}
if (val2 == null) return -1;
if (val1 instanceof BigDecimal && val2 instanceof BigDecimal) {
return -((BigDecimal) val1).compareTo((BigDecimal) val2);
}
return 1;
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
return 1;
});
}
}
class User{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
java 利用反射使list根据任意对象某个属性排序
猜你喜欢
转载自blog.csdn.net/c5113620/article/details/104802126
今日推荐
周排行