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

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

流 是值的序列。一个中间流操作是,需要一个流的操作。例如,可以将其应用于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
200jshell> 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
40jshell> numbers.stream().distinct().sorted().forEach(elem -> System.out.println(elem));
3
5
9
40
54
280jshell> numbers.stream().distinct().map(num -> num * num).forEach(elem -> System.out.println(elem));
9
25
2916
78400
81
1600