事情是 政治面貌 1群众 2党员 3团员 。需求就是要把2在最前,之后是1 ,之后是3。对于以后再加入的类型都排在后面。

也就是说既不是按照升序 也不是按照降序 要根据2>1>3>4>5>.....这个规则来排序。

1.实现Comparable,相当于‘这个类要排序’了。 当然要实现compareTo方法。

2.通过内部类 new出来 然后写比较逻辑来实现。

list.stream().sorted(
                Comparator.comparing(实体类::字段1的get方法, Comparator.reverseOrder())
                        .thenComparing(实体类::字段2的get方法, new Comparator<Integer>() {
                            @Override
                            public int compare(Integer o1, Integer o2) {

                                return 0;
                            }
                        })
        ).collect(Collectors.toList());

此时在 compare方法里,就分为3种情况。

1 两个数都小于3 (2>1 倒叙)

2 两个数都大于3  (正序排列)

3 一个大于3一个小于3  (小于3的在前,其实也是正序排列)

所以对应的逻辑就是

@Override
                            public int compare(Integer o1, Integer o2) {
                                if (o1 < 3 && o2 < 3) {
                                    return o2 - o1;
                                } else {
                                    return o1 - o2;
                                }
                            }

完成。