如何实现 List<实体类>根据实体类的两个属性值的差的绝对进行降序排序
public class PostPreparationInfo extends BaseModel implements Comparable<PostPreparationInfo> {
private String preparationNumberFront;
private String preparationNumberAfter;
@Override
public int compareTo(PostPreparationInfo o) {
return (Math.abs(Integer.parseInt(nvl(o.getPreparationNumberAfter())) - Integer.parseInt(nvl(o.getPreparationNumberFront()))));
}
}
nvl是把空转成“ ”
不起作用
重写compare方法
要求2个属性的差的绝对值 进行比较;你这只是某一个属性的2属性差的绝对值
(Math.abs(Integer.parseInt(nvl(o.getPreparationNumberAfter())) - Integer.parseInt(nvl(o.getPreparationNumberFront()))));
不知道符不符合你可以看看
Stu stu =new Stu();
Stu stu1 =new Stu();
Stu stu2 =new Stu();
Stu stu3 =new Stu();
stu.setName("mls");
stu.setSex("男");
stu.setAge(18);
stu.setDept("it");
stu.setWeight(90);
stu1.setName("lls");
stu1.setSex("男");
stu1.setAge(18);
stu1.setDept("it");
stu1.setWeight(100);
stu2.setName("hyf");
stu2.setSex("男");
stu2.setAge(80);
stu2.setDept("it");
stu2.setWeight(110);
stu3.setName("ch");
stu3.setSex("男");
stu3.setAge(110);
stu3.setDept("it");
stu3.setWeight(120);
List<Stu> stus =new ArrayList<>();
stus.add(stu);
stus.add(stu1);
stus.add(stu2);
stus.add(stu3);
stus=stus.stream().sorted(Comparator.comparing(count -> {
int k= count.getWeight()-count.getAge();
return k;
})).collect(Collectors.toList());
System.out.println(stus);