我知道如何获取一个具有数字范围的int[]
:
int[] array = IntStream.of(0, 3).toArray();
但是如何获取一个固定长度和一个特定数字的值呢?
我知道如何获取一个具有数字范围的int[]
:
int[] array = IntStream.of(0, 3).toArray();
IntStream.generate(() -> x).limit(y)
这是你需要的。将x
和y
替换为任何您喜欢的数字,您将生成一个具有y
个数字x
的流。
然后您可以明显地调用toArray
或执行您想要的任何操作。
IntStream.generate
使用供应商创建一个无限流。
limit
(不引入SIZED
标志)的简单调用,仅用于生成数组? - Eugene以下是一种方法:
int[] array = IntStream.rangeClosed(1, n).map(x -> m).toArray();
这应该产生长度为n
,填充有m
的数组。
以下问答中还有其他使用不同方法的答案,比如使用Arrays.fill
方法。
IntStream.range(0, n)
,这更短。;) +1 - Peter Lawrey// n elements of value m
int[]a=new int[n];
Arrays.fill(a,m);
fill
操作也能得到类似的处理。这里看到的所有其他版本都需要内联若干其他代码,才能确定结果是否真正覆盖整个数组而不读取任何字段,并且不能在中途失败。 - Holger甚至可以使用为此编写的API更简单:
int[] arr = new int[10];
Arrays.setAll(arr, x -> 1);
// or if you have enough data for parallel to make any difference
Arrays.parallelSetAll(arr, x -> 1);