要素の無い位置に set する
このコードを実行するとどうなるか。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>(5);
list.set(0, "a");
System.out.println(list);
}
}
- A
[a]と出力される - B
[a, null, null, null, null]と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: C
- A: set は既にある要素の置き換えです。要素が無い位置には set できません。
- B: 初期容量 5 を指定しても要素数 (size) は 0 のままで、null で埋まるわけではありません。
- C: 要素数 0 のリストの位置 0 に set するので、IndexOutOfBoundsException です。
- D: 位置が範囲内かは実行時にしか分からないので、コンパイルはできます。
ポイント
new ArrayList<>(5)の 5 は 初期容量 で、要素数 (size) は 0 のままです。- 要素が無い位置に set すると
IndexOutOfBoundsExceptionです。追加は add を使います。