126

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;
    }

我会正确吗?还有其他方法吗?

4

11 回答 11

245

如果它是原始类型,您可以使用Arrays.fill()

Arrays.fill(array, -1);

[顺便说一句,memset在 C 或 C++ 中,只有char. ]

于 2012-04-09T19:50:27.873 回答
33

还有

int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
于 2012-04-09T19:50:44.880 回答
7

Java 8 流也可以:

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

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

于 2017-02-01T21:38:03.037 回答
3

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

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()其他人提到的选项。

于 2012-04-09T19:52:27.693 回答
1

java.util.Arrays.fill()

于 2012-04-09T19:50:31.310 回答
1

您是否尝试过Arrays.fill 功能

于 2012-04-09T19:50:58.927 回答
1

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

于 2012-04-09T19:51:35.240 回答
0

显然,您可以使用 Arrays.fill(),但您完成它的方式也可以。

于 2012-04-09T20:07:05.340 回答
0

对于您可以使用的列表

Collections.fill(arrayList, "-")

于 2020-01-02T18:30:53.783 回答
0

java.utils 中的 Arrays 类有一个方法。

Arrays.fill(your_array, value_to_fill);
于 2021-12-24T15:45:14.363 回答
0

使用 Java 8,您可以简单地使用ncopiesCollections

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

在您的情况下,它将是:

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

是您的类似案例的详细答案。

于 2019-03-01T11:06:16.787 回答