ListIterator でリストを変更する

Java の入出力とストリーム

Alex Liu

Software Development Engineer

Iterator と ListIterator の比較

Iterator と ListIterator の比較

Java の入出力とストリーム

サンプル ArrayList

import java.util.ArrayList;
public class SampleData {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }
}  
[Alice, Bob, Charlie]
Java の入出力とストリーム

ListIterator で走査する

// ListIterator クラスをインポート
import java.util.ListIterator;

// サンプルリスト `names` の ListIterator を作成 ListIterator<String> it = names.listIterator(); // .hasNext() と `.next()` で走査し、1行ずつ表示 while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Java の入出力とストリーム

ListIterator で後方へ移動

  • .previous() で後方へ移動
// サンプルリスト `names` の ListIterator を作成
ListIterator<String> it = names.listIterator(names.size());
// .hasPrevious() で先頭到達を確認
while (it.hasPrevious()) {
    // .previous() で逆順に取得
    System.out.println(it.previous());}
  • 逆順で出力:
Charlie
Bob
Alice
Java の入出力とストリーム

反復中に要素を変更

  • .set() メソッドを使用
// サンプルリスト names の ListIterator を作成
ListIterator<String> it = names.listIterator();

// 反復中に .set() で要素を変更 while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • 更新後の names リスト:
[Alice, Bobby, Charlie]
Java の入出力とストリーム

反復中に要素を追加

  • 要素追加は .add() を使用
ListIterator<String> it = names.listIterator();

// 反復中に .add() で要素を挿入 while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • 更新後の names リスト:
    [Alice, Bobby, Charlie, David]
    
Java の入出力とストリーム

まとめ

  • ListIteratorIterator を拡張
    • 前方・後方の両方向に走査可能
    • 反復しながら要素を変更可能
  • 主要メソッドまとめ

    • .next()/.previous(): 前へ/後ろへ移動
    • .set(): 現在要素を変更
    • .add(): 要素を挿入
    • .remove(): 安全に削除
    • List のみで使用可(ArrayListLinkedList など)
Java の入出力とストリーム

Passons à la pratique !

Java の入出力とストリーム

Preparing Video For Download...