这个for循环可以转换为IntStream吗?

Eos*_*gen 5 java java-8

是否有任何方法可以将以下for循环转换为使用IntStream

for (int i =1; i<=5; i++)
{
   nums.add(n.nextInt(45)+1);
}
Run Code Online (Sandbox Code Playgroud)

我非常简单地尝试了以下内容:

IntStream.range(1,5).forEach(nums.add(n.nextInt(45)+1));
Run Code Online (Sandbox Code Playgroud)

但它输出以下错误:

不兼容的类型:boolean不能转换为IntConsumer IntStream.range(1,5).forEach(nums.add(n.nextInt(45)+1));

Era*_*ran 9

您缺少lambda表达式的参数:

IntStream.rangeClosed(1,5).forEach(i -> nums.add(n.nextInt(45)+1));
Run Code Online (Sandbox Code Playgroud)

此外,rangeClosed如果您希望索引从1到5(包括1和5),则需要.

也就是说,有更简洁的方法IntStream来产生随机数.例如:

Random rand = new Random();
int[] nums = rand.ints(5,1,46).toArray();
Run Code Online (Sandbox Code Playgroud)