020 コレクションフレームワーク(List) 005 解答例

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // 与えられたリスト
        List<String> fruits = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange", "Grapes", "Kiwi"));

        // イテレーターの取得
        Iterator<String> iterator = fruits.iterator();

        // イテレーターを使用して各要素を "Updated" に変更
        while (iterator.hasNext()) {
            iterator.next(); // イテレーターを進めて現在の要素にアクセス
            iterator.remove(); // 現在の要素を削除
            iterator.add("Updated"); // "Updated" という要素を追加
        }

        // 変更後のリストを表示
        System.out.println(fruits);
    }
}

イテレーターの取得:

Iterator<String> iterator = fruits.iterator();

iterator メソッドを使用して、リスト fruits のイテレーターを取得します。

イテレーターを使用して各要素を “Updated” に変更:

while (iterator.hasNext()) {
    iterator.next(); // イテレーターを進めて現在の要素にアクセス
    iterator.remove(); // 現在の要素を削除
    iterator.add("Updated"); // "Updated" という要素を追加
}

イテレーターを使用して、各要素を “Updated” に変更します。iterator.next() で現在の要素にアクセスし、iterator.remove() で現在の要素を削除し、iterator.add(“Updated”) で “Updated” という要素を追加します。

変更後のリストを表示:

System.out.println(fruits);

変更後のリストを表示します。

このコードを実行すると、リストの各要素が “Updated” に変更され、変更後のリストが表示されます。なお、この方法はあくまで一例であり、要件に応じて他の方法も考えられます。

イテレーターを利用した要素の変更

  1. イテレーターの取得: イテレーターは、リスト内の要素に順番にアクセスするための道具です。まず、リストからイテレーターを取得します。
  2. イテレーターの使用: イテレーターを使用して、リスト内の各要素に順番にアクセスします。これには hasNext メソッドを使用してイテレーターが次の要素を持っているか確認し、next メソッドを使って次の要素に移動します。
  3. 要素の変更: イテレーターを使用している最中に、remove メソッドを呼び出すことで現在の要素をリストから削除できます。そして、add メソッドを使用して新しい要素をイテレーターの現在の位置に追加します。
  4. 変更の結果: イテレーターを通して要素を変更することで、リストが同時変更の例外から保護されつつ、効率的に変更が行われます。これは通常、条件に基づいた要素の変更や削除が必要な場合に便利です。

この一般的な説明を元に、具体的な操作が行われているコード例を理解することで、イテレーターの利用と要素の変更がより明確に理解できるでしょう。

注意点:

  • イテレーターの remove メソッドを使用すると、リストから要素が削除されます。そして、その位置に新しい要素を挿入することで変更が行われます。
  • イテレーターを使用する場合、通常は while (iterator.hasNext()) ループを使用してすべての要素にアクセスします。
  • イテレーターを使ってリストの要素を変更することで、同時変更の問題を回避しながら要素の変更が行えます。

イテレーターを使用してリストの要素を変更することは、リストの安全で効率的な操作を実現する重要な手法の一つです。同時変更の問題を回避しながら、要素の削除と追加が容易に行え、柔軟性と効率性が向上します。

要素の変更が必要な場合、イテレーターを介してリストを操作することで、プログラムの品質を維持しながら操作を行うことができます。これにより、可読性が向上し、コードの保守性が高まります。

イテレーターの利用は、リストの内容を動的に変更するニーズに応える上で優れた手段であり、データの操作において欠かせない存在となっています。

「020 コレクションフレームワーク」問題集リスト