Stream sorted 使用
// 取出小计
Map<String, BigDecimal> map = oldList.stream().filter(l -> l.getDimension2().equals("小计")).collect(Collectors.toMap(ChartDataView::getDimension1, ChartDataView -> ChartDataView.getTarget5()));
// 将小计放入对应部门 排序用
oldList.forEach( item -> {
if(map.containsKey(item.getDimension1())){
item.setTarget7(map.get(item.getDimension1()));
if("小计".equals(item.getDimension2())){
item.setTarget8(new BigDecimal("1"));
}else{
item.setTarget8(BigDecimal.ZERO);
}
}
}
);
List<ChartDataView> newList = oldList.stream().sorted(Comparator.comparing(ChartDataView::getTarget7,(x,y)->y.compareTo(x))
.thenComparing(ChartDataView::getDimension1)
.thenComparing(Comparator.comparing(ChartDataView::getTarget8))
.thenComparing(Comparator.comparing(ChartDataView::getTarget5,(x,y)->y.compareTo(x)))).collect(Collectors.toList());
我成功因为我志在成功
浙公网安备 33010602011771号