lambda表达式——sort和compare进行高级排序

lambda表达式中的sorted和Comparator实现多种方式排序

1.倒序排序

2.先后顺序排序

3.自定义排序规则

代码如下

List<Trade> sorted 
                = trades.stream()
                .sorted(
                        Comparator
                                // 首先按照价格排序
                                .comparing(
                                        Trade::getPrice,
                                        // TODO 进行排序调整,将自然排序翻转
                                        Comparator.reverseOrder())

                                // 时间先后进行排序,自然排序
                                .thenComparing(Trade::getTime)

                                // 交易量排序,自然排序翻转
                                .thenComparing(
                                        Trade::getCount,
                                        Comparator.reverseOrder())

                                // 自定义排序规则
                                .thenComparing(
                                        // 要排序的字段值
                                        Trade::getType,

                                        // 自定义排序规则
                                        (type1, type2) -> {
                                            if ("机构".equals(type1) && "个人".equals(type2)) {
                                                // -1:type1在先, type2在后
                                                return -1;
                                            } else if ("个人".equals(type1) && "机构".equals(type2)) {
                                                return 1;
                                            } else {
                                                return 0;
                                            }
                                        }))
                .collect(Collectors.toList());