流中sorted操作是升序的,如果要自定义操作,是要重写comparing的实现吗?
来源:3-8 实战:常用中间操作演示之遍历/排序

煮沧海
2019-12-08
RT所示,如果是要重写comparing的实现的话,能否向匿名内部类在流中实现还是在外面实现呢?第一次接触stream流,可能问题有点愚蠢,请老师指教一下,感谢
写回答
1回答
-
流中元素如何已经实现了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); }
032019-12-10
相似问题