java 8 stream两种多条件排序方式记录

2,987 阅读1分钟

多条件排序

方式1 使用多次sorted

deliveryList= deliveryList.stream().sorted(Comparator.comparing(SaleMonthPlanDTO::getYearMonth).reversed())
                .sorted(Comparator.comparing(SaleMonthPlanDTO::getSaleOrgCode).reversed())
                //使用reversed 改为降序
                .sorted(Comparator.comparingDouble(SaleMonthPlanDTO::getCompleteRateNotNull).reversed()).collect(Collectors.toList());

方式2 使用thencomparing 方法

 deliveryList = deliveryList.stream()//使用reversed 改为降序
                .sorted(Comparator.comparingDouble(SaleMonthPlanDTO::getCompleteRateNotNull).reversed()
                        .thenComparing(SaleMonthPlanDTO::getSaleOrgCode)
                        .thenComparing(Comparator.comparing(SaleMonthPlanDTO::getYearMonth).reversed()))
                .collect(Collectors.toList());

注意方式1使用的时候排序的条件是倒过来的,推荐使用方式2 thenComparing方法