排序对象
public class ResultVO {
private Long id;
private String name;
private String time;
/**
* 辅助排序字段
*/
private Integer sortHelp;
}
根据集合中某个字段去重
// 根据集合中id去重
oldResultVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(ResultVO::getId))), ArrayList::new));
根据集合中某个字段排序
resultVOS.stream().sorted(Comparator.comparing(ResultVO::getSortHelp, Comparator.nullsLast(Integer::compareTo)).
collect(Collectors.toList());
根据集合中多个字段就行排序
// 使用 thenComparing进行排序, ,Comparator.reverseOrder()按倒序排。默认是升序
resultVOS.stream().sorted(Comparator.comparing(ResultVO::getSortHelp, Comparator.nullsLast(Integer::compareTo)).
thenComparing(ClinicResultVO::getApplyTime,Comparator.reverseOrder())).
collect(Collectors.toList());
根据集合中某个字段的值选择性排序
// 比如stateDc是3 的排第一, 8 的排第二, 6的排第三等等,可以添加一个辅助排序字段,将这个字段按照规则赋值,对这个字段进行排序
resultVOS.forEach(x->{
if(x.getStateDc().equals("3")){x.setSortHelp(1);}
if(x.getStateDc().equals("8")){x.setSortHelp(2);}
if(x.getStateDc().equals("5")){x.setSortHelp(3);}
});
// 使用设置的值进行排序
resultVOS.stream().sorted(Comparator.comparing(ResultVO::getSortHelp, Comparator.nullsLast(Integer::compareTo)).
thenComparing(ClinicResultVO::getApplyTime,Comparator.reverseOrder())).
collect(Collectors.toList());