合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
### [Arrays](https://lingcoder.gitee.io/onjava8/#/book/14-Streams?id=arrays) `Arrays`类中含有一个名为`stream()`的静态方法用于把数组转换成为流。我们可以重写`interfaces/Machine.java`中的主方法用于创建一个流,并将`execute()`应用于每一个元素。代码示例: ~~~ // streams/Machine2.java import java.util.*; import onjava.Operations; public class Machine2 { public static void main(String[] args) { Arrays.stream(new Operations[] { () -> Operations.show("Bing"), () -> Operations.show("Crack"), () -> Operations.show("Twist"), () -> Operations.show("Pop") }).forEach(Operations::execute); } } ~~~ 输出结果: ~~~ Bing Crack Twist Pop ~~~ `new Operations[]`表达式动态创建了`Operations`对象的数组。 `stream()`同样可以产生**IntStream**,**LongStream**和**DoubleStream**。 ~~~ // streams/ArrayStreams.java import java.util.*; import java.util.stream.*; public class ArrayStreams { public static void main(String[] args) { Arrays.stream(new double[] { 3.14159, 2.718, 1.618 }) .forEach(n -> System.out.format("%f ", n)); System.out.println(); Arrays.stream(new int[] { 1, 3, 5 }) .forEach(n -> System.out.format("%d ", n)); System.out.println(); Arrays.stream(new long[] { 11, 22, 44, 66 }) .forEach(n -> System.out.format("%d ", n)); System.out.println(); // 选择一个子域: Arrays.stream(new int[] { 1, 3, 5, 7, 15, 28, 37 }, 3, 6) .forEach(n -> System.out.format("%d ", n)); } } ~~~ 输出结果: ~~~ 3.141590 2.718000 1.618000 1 3 5 11 22 44 66 7 15 28 ~~~ 最后一次`stream()`的调用有两个额外的参数。第一个参数告诉`stream()`从数组的哪个位置开始选择元素,第二个参数用于告知在哪里停止。每种不同类型的`stream()`都有类似的操作。