コレクションフレームワークを理解するために、今日の問題を解いてみましょう。
問題
次のプログラムを実行した場合の正しい出力を選んでください。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
list.set(1, "Grapes");
list.remove(0);
for (String fruit : list) {
System.out.println(fruit);
}
}
}
選択肢
- A. Apple, Banana, Orange
- B. Banana, Orange
- C. Grapes, Orange
- D. Orange, Grapes
答えと解説
回答を見る
答え
C. Grapes, Orange
解説
この問題では、ArrayListの操作について検討します。list.add()
は要素を追加し、list.set()
は指定された位置の要素を置き換えます。
- ArrayListの操作順序: 最初に“Apple”, “Banana”, “Orange”の3つの要素が追加されます。
- インデックスの役割:
list.set(1, "Grapes")
では、“Banana”が“Grapes”に置き換わります。インデックスは0から始まります。 - 要素の削除:
list.remove(0)
でインデックス0の“Apple”が削除されます。
以上により、リストの状態は“Grapes”,“Orange”になり、プログラムの最終出力はこの2つの文字列です。
つまずきポイント: 技術的な用語で混乱しがちですが、「インデックス」とは、リスト内の位置を意味し、0から始まると常に覚えておきましょう。
初心者では、指定されたインデックスが正しいオブジェクトを指しているか、置き換えが成功したか、削除が他の要素に影響を与えていないかを追跡することが困難になる場合があります。
発展知識
ArrayListは逐次配置された配列のように動作しますが、要素数を気にすることなく要素を追加・削除できます。
ただし、これらの操作は時間がかかることがあるため、最適化が必要な場合は別のデータ構造を選択することを考慮してください。