MENU

【Java Silver】ListインタフェースとArrayListクラスの使用

今日もJavaの基礎を確認するために、問題を解いてみましょう。

問題

次のArrayListを使用したプログラムを実行した場合、出力される結果として正しいものを選んでください。

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("Cherry");
        list.remove(1);
        list.add(1, "Blueberry");
        
        for(String fruit : list) {
            System.out.println(fruit);
        }
    }
}

選択肢

  • A. Apple, Banana, Cherry
  • B. Apple, Blueberry, Cherry
  • C. Banana, Blueberry, Cherry
  • D. Cherry, Blueberry, Apple

答えと解説

回答を見る

答え

B. Apple, Blueberry, Cherry

解説

解説のポイント:

  • ArrayListの基本的な使い方と要素の操作
  • インデックス操作の結果と注意点

基本説明:

ArrayListは、Javaのコレクションフレームワークの一部で、可変サイズの配列としての機能を提供します。add()メソッドを使用して要素を追加し、remove()メソッドを使って要素を削除することができます。

プログラムでは最初に”Apple”、”Banana”、”Cherry”が順に追加されます。その後、list.remove(1)が実行され、インデックス1にある”Banana”が削除され、それに続く要素が前に詰められます。

その次に、list.add(1, "Blueberry")を呼び出すことで、インデックス1に”Blueberry”が挿入されます。この結果、リストは”Apple”、”Blueberry”、”Cherry”の順番になります。

誤答理由:

選択肢Aは、削除操作の後に変更が考慮されていないため誤りです。選択肢CとDは、インデックス付けの操作結果を誤解している可能性があります。削除後の追加操作での位置を確認することが大切です。

つまずきポイント:

初心者がつまずくポイントは、リストの要素を削除したときに、リスト中の他の要素がどのようにシフトするかを理解していない場合です。また、インデックス操作自体もよく混乱する要因です。

例えば、リストが[0, 1, 2]の状態からindex1を削除すると[0, 2]となり、1が失われますので、その後のインデックスは、元々よりも1シフトします。これが何度も行われると、目的の位置がずれることになるため、注意が必要です。

発展知識:

ArrayListは内部的には配列を使用しているため、要素を取り除くと残りの要素を移動させなければなりません。これに関連して、LinkedListというコレクションもあり、こちらは要素の挿入・削除が効率的に行える設計です。

従って、要素の頻繁な追加や削除が必要な場合は、使用するコレクションに応じて選択を検討することが推奨されます。コレクションの特徴を理解することは、効率的なプログラミングの重要なスキルです。

目次