28

n配列内のすべてのインデックスで同じ値を持つサイズの配列を作成したいと考えています。Javaでこれを行う最良の方法は何ですか?

たとえば、nが 5 で値が boolean のfalse場合、配列は次のようになります。

= [false, false, false, false, false]
4

7 に答える 7

32

あなたはそれを試すことができます:

boolean[] array = new boolean[5];
Arrays.fill(array, false);

手動で配列を埋める 2 番目の方法:

boolean[] array = new boolean[] {false, false, false, false, false};
于 2013-01-11T10:48:16.663 に答える
29
List<Integer> copies = Collections.nCopies(copiesCount, value);

ここにjavadoc 。

これは、いくつかの理由で「Arrays.fill」ソリューションよりも優れています。

  1. それは素晴らしく、滑らかで、
  2. 大量のコピーや巨大なオブジェクトをコピーする場合に重要なメモリ消費量が少ない (ソース コードを参照)。
  3. 不変リストを作成し、
  4. 非プリミティブ型のオブジェクトのコピーのリストを作成できます。ただし、要素自体は複製されず、get() メソッドはすべてのインデックスに対して同じ値を返すため、注意して使用する必要があります。コピー用の不変オブジェクトを提供するか、変更されないようにすることをお勧めします。

そして、リストは配列よりもクールです:)しかし、本当に本当に配列が必要な場合は、次のことができます。

Integer[] copies = Collections.nCopies(copiesCount, value)
                              .toArray(new Integer[copiesCount]);
于 2015-01-13T11:13:50.770 に答える
6

Arrays.fill()は、既存の配列を同じ値で埋めます。プリミティブ および のバリアントが存在しObjectsます。

于 2013-01-11T10:48:15.967 に答える
6

その特定の例では、何もありません。デフォルトで aboolean[]に初期化さ[false, false, ...]れます。

デフォルト以外の値で配列を初期化する場合Arrays.fillは、ループするか、ループを実行する which を使用する必要があります。

于 2013-01-11T10:48:30.233 に答える
3

Arrays.fill(...)あなたが探しているものです。

于 2013-01-11T10:50:59.510 に答える
-2

これを試して ..

 Boolean [] data = new Boolean[20];
  Arrays.fill(data,new Boolean(false));
于 2013-01-11T10:54:59.567 に答える