访问forEach中的流数据

时间:2017-09-19 14:42:20

标签: java lambda

我正在尝试创建一个int数组并为其分配随机值。但是当我打印数组的值时,所有的值都是0.

 int[] data = new int[1000000];
 Random r = new Random();
 Arrays.stream(data).forEach((x) -> {x = r.nextInt();});
 Arrays.stream(data).forEach(System.out::println);

如何在forEach中访问数组元素的值?

1 个答案:

答案 0 :(得分:1)

您可以使用IntStream来迭代数组的索引。

IntStream.range(0, data.length).forEach(n -> data[n] = r.nextInt());

或者您可以生成随机数流,并使用toArray直接从流中创建数组。

int[] data = IntStream.generate(r::nextInt).limit(1000000).toArray();