事情是 政治面貌 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; } }
完成。
标签:compare,JAVA,自定义,return,规格,Integer,o2,o1 From: https://www.cnblogs.com/Ozewaka/p/16854836.html