import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(1);
System.out.println(nums);
}
}
選択肢
- あなたの回答
- 正解
正解
A. [1, 3]
詳細解説
remove(1) の 1 は int として扱われ、インデックス指定の remove(int index) が選ばれます。インデックス 1 の要素である 2 が削除され、[1, 3] が残ります。
なぜ他の選択肢が違うのか
- 値 1 を削除したい場合は nums.remove(Integer.valueOf(1)) のように書く必要があります。
- 末尾を削除しているわけではありません。
- ArrayList<Integer> でも remove(int) と remove(Object) は利用できます。
罠ポイント
オーバーロードでは引数の型が重要です。Integer のリストだから値削除になる、とは限りません。