如何在Java 9的JShell中使用中间流操作?


JShell 是在Java 9中引入的一个工具,它接受简单的语句,例如表达式、变量、方法、类等作为输入,并立即产生结果。

流 (Stream) 是值的序列。中间流操作 是一种对流进行操作的操作。例如,它可以应用于lambda表达式,并生成另一个元素流作为结果。

下面列出了最流行的中间流操作

  • 1) sorted(): 此方法保留消耗流的元素作为结果,但也会将它们按自然排序顺序排列。
  • 2) distinct(): 此方法返回一个流,其中只保留输入流中唯一的元素,并且可以保持保留元素的相对顺序。
  • 3) filter(): 此方法可以用于根据某些逻辑过滤流元素。
  • 4) map(): 此方法应用lambda表达式来根据输入流元素计算新的结果。然后,它返回这些结果的流作为输出。


在下面的代码片段中,我们可以在JShell工具中实现不同的中间流操作。

代码片段

jshell> List<Integer> numbers = List.of(3, 10, 23, 200, 77, 9, 32);
numbers ==> [3, 10, 23, 200, 77, 9, 32]

jshell> numbers.stream().sorted().forEach(elem -> System.out.println(elem));
3
9
10
23
32
77
200

jshell> List<Integer> numbers = List.of(3, 5, 54, 280, 5, 9, 40);
numbers ==> [3, 5, 54, 280, 5, 9, 40]

jshell> numbers.stream().distinct().forEach(elem -> System.out.println(elem));
3
5
54
280
9
40

jshell> numbers.stream().distinct().sorted().forEach(elem -> System.out.println(elem));
3
5
9
40
54
280

jshell> numbers.stream().distinct().map(num -> num * num).forEach(elem -> System.out.println(elem));
9
25
2916
78400
81
1600

更新于:2020年4月23日

251 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告