1. ホーム
  2. java

[解決済み] JavaでArrayListをすべてゼロで初期化するには?

2022-04-13 21:23:33

質問

以下のようになります。 arraylist がプリサイズのために仕事をしていない。

// presizing 

ArrayList<Integer> list = new ArrayList<Integer>(60);

その後、アクセスしようとすると

list.get(5) 

0 を返す代わりに IndexOutOfBoundsException: 長さ 0 のインデックス 5 は範囲外です .

C++がやっているように、すべての要素を正確な大きさの0に初期化する方法はありますか?

どのように解決するのですか?

コンストラクタに渡された整数は、その 初期容量 つまり、内部配列のサイズを変更する前に保持できる要素数です (リストの初期要素数とは関係ありません)。

リストを60個のゼロで初期化する場合、次のようにします。

List<Integer> list = new ArrayList<Integer>(Collections.nCopies(60, 0));


60個のリストを作成する場合 異なる オブジェクトを作成する場合、Stream API を使って Supplier を以下のように設定します。

List<Person> persons = Stream.generate(Person::new)
                             .limit(60)
                             .collect(Collectors.toList());