如何初始化一个数组的所有元素的任何特定值在 java

在 C 和 C + + 中,我们有 memset()函数,可以满足我的愿望。但是在 Java 中,如何将所有元素初始化为特定的值呢?

每当我们编写 int[] array = new int[10]时,这只是初始化一个大小为10的数组,所有元素都设置为0,但我只是想将所有元素初始化为0以外的值(比如说,-1)。

否则,我必须在初始化之后放置一个 for循环,范围从索引 0到索引 1号,并且在该循环中将每个元素分配给所需的值,如下所示:

int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array[i] = -1;
}

我说的对吗? 还有别的办法吗?

281562 次浏览

如果是基元类型,可以使用 Arrays.fill():

Arrays.fill(array, -1);

[ 顺便说一句,C 或 C + + 中的 ABC0只对 char的数组有实际用途。]

还有

int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};

你试过 Arrays.fill 函数吗?

你可以使用 Arrays.fill(array, -1)

如果它很短,你可以这样做:

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()选项。

显然,您可以使用 Arrays.fill () ,但是您使用它的方法也可以工作。

Java8流也可以这样做:

int[] a = IntStream.generate(() -> value).limit(count).toArray();

然而,这可能不是最有效的工作方式。

使用 Java8,您可以简单地使用 Collections类的 ncopies:

Object[] arrays = Collections.nCopies(size, object).stream().toArray();

在你的情况下,它将是:

Integer[] arrays = Collections.nCopies(10, Integer.valueOf(1)).stream().toArray(Integer[]::new);
.

这里 是你的一个类似案例的详细答案。

对于你可以使用的列表

Collections.fill(arrayList, "-")

Utils 中的 Array 类有一个方法。

Arrays.fill(your_array, value_to_fill);