流中sorted操作是升序的,如果要自定义操作,是要重写comparing的实现吗?

来源:3-8 实战:常用中间操作演示之遍历/排序

煮沧海

2019-12-08

RT所示,如果是要重写comparing的实现的话,能否向匿名内部类在流中实现还是在外面实现呢?第一次接触stream流,可能问题有点愚蠢,请老师指教一下,感谢

写回答

1回答

张小喜

2019-12-08

流中元素如何已经实现了Compare接口,可以直接使用第一/第二种方式进行正序/倒序排列。如何没有实现Compare接口,或者需要自定义排序规则,可以使用第三种方式排序。

@Test
public void test() {

    List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);

    // 第一:正序排列
    list.stream().sorted().forEach(System.out::println);

    // 第二:倒序排列
    list.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);

    // 第三:按奇偶排序:奇数在先,偶数在后
    list.stream().sorted(Comparator.comparing(item -> {
        // 奇数为1;偶数为-1
        return item % 2 == 0 ? 1 : -1;
    })).forEach(System.out::println);

}


0
3
张小喜
那个奇偶的是我写错了。关于后面那个问题,你QQ联系我吧,有点儿复杂,一两句说不明白。
2019-12-10
共3条回复

Java高效编程技巧实践 告别996

可以改变的编程效率

1451 学习 · 326 问题

查看课程