在C/C++
我们有memset()
函数可以满足我的愿望,但在Java
我如何将所有元素初始化为特定值?每当我们写int[] array=new int[10];
时,这只是初始化一个大小为10的数组,所有元素都等于零。我只想为我的一个数组更改这个初始化整数。即我想初始化一个所有元素都等于-1
的数组。否则,我必须在初始化之后放置for
循环,范围从索引0
到索引size-1
,在该循环内,我将元素分配给-1
。以下是更多理解的代码 -
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
我是否正确?还有其他方法吗?
答案 0 :(得分:194)
如果是原始类型,您可以使用Arrays.fill()
:
Arrays.fill(array, -1);
[顺便提一下,C或C ++中的memset
只对char
的数组有任何实际用途。]
答案 1 :(得分:28)
还有
int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
答案 2 :(得分:3)
Java 8流也可以:
int[] a = IntStream.generate(() -> value).limit(count).toArray();
然而,可能不是最有效的工作方式。
答案 3 :(得分:2)
如果它很短,你可以这样做:
int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
但这不仅仅是一些。
更简单的是for
循环:
int[] myArray = new int[10];
for (int i = 0; i < array.length; i++)
myArray[i] = -1;
编辑:我也喜欢其他人提到的Arrays.fill()
选项。
答案 4 :(得分:1)
答案 5 :(得分:1)
您是否尝试过Arrays.fill function?
答案 6 :(得分:0)
您可以使用Arrays.fill(array, -1)
。
答案 7 :(得分:0)
显然你可以使用Arrays.fill(),你完成它的方式也可以。
答案 8 :(得分:0)
使用Java 8,您只需使用ncopies
类的Collections
:
Object[] arrays = Collections.nCopies(size, object).stream().toArray();
您的情况将是:
Integer[] arrays = Collections.nCopies(10, Integer.valueOf(1)).stream().toArray(Integer[]::new);
.
Here是您类似情况的详细解答。
答案 9 :(得分:0)
对于列表,您可以使用
Collections.fill(arrayList, "-")