一个list中放多个对象 ,这些对象有一个相同字段,根据这个字段进行排序
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
A a = new A();
a.setType("A");
a.setSize(2);
list.add(a);
B b = new B();
b.setType("B");
b.setSize(1);
list.add(b);
C c = new C();
c.setType("C");
c.setSize(3);
list.add(c);
System.out.println(list.toString());
Collections.sort(list, (s1, s2) -> getFieldValueByFieldName("size", s1).compareTo(getFieldValueByFieldName("size", s2)));
System.out.println(list.toString());
}
public static Integer getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
return (Integer) field.get(object);
} catch (Exception e) {
return null;
}
}
public class A {
private String type;
private Integer size;
}
public class B {
private String type;
private Integer size;
}
public class C {
private String type;
private Integer size;
}