java lambda 自定义排序规则
参考以下修改
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);
});