对象排序和去重

93 阅读1分钟

使用流式编程:

List<BusinessFaceIssuedRecord> distinctList = list.stream().
                collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
                        new TreeSet<>(Comparator.comparing
                                (o -> o.getPersionId() + ";" + o.getDeviceId()+";"+o.getIssuedType()))),
                        ArrayList::new));

使用流式编程对象排序:

// 先按照订单类型降序,再按照订单应付金额从高到低排序,支持空值null
    private static void sort2(List<Order> orders) {
        orders.sort(Comparator.comparing(Order::getType, (o1, o2) -> o1 == null ? 1 : (o2 == null ? -1 : o2.compareTo(o1)))
                .thenComparing(Order::getAllAmt, (o1, o2) -> o1 == null ? 1 : (o2 == null ? -1 : o2.compareTo(o1)))
        );
    }

    // 先按照订单类型降序,再按照订单应付金额从高到低排序,不支持空值null
    private static void sort1(List<Order> orders) {
        orders.sort(Comparator.comparing(Order::getType, Comparator.reverseOrder())
                .thenComparing(Order::getAllAmt, Comparator.reverseOrder()));
    }