ArrayListの初期サイズを設定するには、次のようにします。
ArrayList<Integer> arr=new ArrayList<Integer>(10);
しかし、
arr.add(5, 10);
範囲外例外が発生するためです。
割り当てたスペースにアクセスできない場合、初期サイズを設定しても何の意味があるのでしょうか?
add 関数は として定義されているadd(int index, Object element)
ため、インデックス 10 には追加されません。
ベストアンサー1
配列リストのサイズとその容量を混同しています:
- サイズはリスト内の要素の数です。
- 容量は、リストの内部構造を再割り当てせずにリストが収容できる可能性のある要素の数です。
を呼び出すとnew ArrayList<Integer>(10)
、リストのサイズではなく、リストの初期容量が設定されます。つまり、この方法で構築すると、配列リストは空の状態で開始されます。
配列リストに 10 個の要素を追加する 1 つの方法は、ループを使用することです。
for (int i = 0; i < 10; i++) {
arr.add(0);
}
これを実行すると、インデックス 0..9 の要素を変更できるようになります。