参考以下修改
List<ObjTest> objTestList = new LinkedList<>(); //用来存放新的排好序的数据
//排序规则
List<String> sortList = Arrays.asList("当前审批人","流程参与者","起草人","新增读者","NONE");
list.stream().sorted(
Comparator.comparing(ObjTest::getApplyStatusDesc,(x,y)->{
if(x == null && y != null){
return 1;
}else if(x !=null && y == null){
return -1;
}else if(x == null && y == null){
return -1;
}else{
//按照读取的list顺序排序
for(String sort : sortList){
if(sort.equals(x) || sort.equals(y)){
if(x.equals(y)){
return 0;
}else if(sort.equals(x)){
return -1;
}else{
return 1;
}
}
}
return 0;
}
}) .thenComparing(Comparator.comparing(ObjTest::getRepaymentStatus,Comparator.nullsLast(Integer::compareTo))
.thenComparing(Comparator.comparing(ObjTest::getOverStatus,Comparator.nullsLast(Integer::compareTo)).reversed()).thenComparing(Comparator.comparing(ObjTest::getCreateDate)))
).collect(Collectors.toList()).forEach( x->{
ObjTest o = new ObjTest();
BeanUtils.copyProperties(x,o);
objTestList.add(o);
});

本文介绍如何使用Java Stream API进行复杂的数据排序操作,包括根据特定字段排序、处理空值以及实现自定义排序规则。通过示例展示了如何对ObjTest对象列表按applyStatusDesc、repaymentStatus、overStatus和createDate字段进行排序。
3262

被折叠的 条评论
为什么被折叠?



