126

C/C++memset()の願いを叶えることができる関数がありますが、どのようにJavaしてすべての要素を特定の値に初期化できますか?を書くときはいつでもint[] array=new int[10];、これはすべての要素がゼロに等しいサイズ10の配列を単純に初期化します。配列の1つでこの初期化整数を変更したいだけです。つまり、すべての要素がに等しい配列を初期化したいのです-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);

[ちなみに、memsetCまたは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

Java8ストリームでも可能です。

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

Arrays.fill関数を試しましたか?

于 2012-04-09T19:50:58.927 に答える
1

を使用できますArrays.fill(array, -1)

于 2012-04-09T19:51:35.240 に答える
1

java.util.Arrays.fill()

于 2012-04-09T19:50:31.310 に答える
0

明らかに、Arrays.fill()を使用できますが、それを実行する方法も機能します。

于 2012-04-09T20:07:05.340 に答える
0

ncopiesJava 8を使用すると、Collectionsクラスを簡単に使用できます。

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 に答える
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 に答える