イテレータ入門

Java の入出力とストリーム

Alex Liu

Software Development Engineer

コレクションの操作

  • 以降の動画で使う HashSet の例
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Java の入出力とストリーム

For-Each ループを使う

  • For-Each ループ
    • 形式: for (type x: collection){}
    • 各要素を自動処理
    • 複数のコレクションで使用可: ListSetMap など
  • 例: サンプル集合 fruits: [Apple, Banana]
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Java の入出力とストリーム

Iterator でコレクションを走査

  • Iterator<> を使用: ListSetQueue などをサポート
  • Iterator クラスをインポート
import java.util.Iterator;

// サンプル集合 `fruits` 用の `Iterator` オブジェクト it を作成 Iterator<String> it = fruits.iterator(); // `.hasNext()` は次の要素があるか確認 while (it.hasNext()) { // `.next()` で要素を取得 System.out.print(it.next());}
Apple Banana
Java の入出力とストリーム

Iterator で要素を削除

  • Iterator.remove() を使って要素を削除

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // 先頭が `A` の要素を削除
        it.remove();
        }
}
// fruits は "Banana" のみ
Java の入出力とストリーム

Iterator で要素を削除(続き)

  • 削除前:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • 削除後:

    System.out.println(fruits);
    
    [Banana]
    
  • 安全に削除し、ConcurrentModificationException を防止

安全な削除を表すアイコン

Java の入出力とストリーム

まとめ

  • For-Each ループ
    • 対応
      • ListArrayListLinkedList
      • SetHashSetTreeSetLinkedHashSet
      • QueuePriorityQueue
      • StackStack
    • 非対応
      • Map
      • 要素の削除
  • Iterator
    • 対応
      • ListArrayListLinkedList
      • SetHashSetTreeSetLinkedHashSet
      • QueuePriorityQueue
      • StackStack
      • MapkeySet().iteratorvalues().iteratorentrySet().iterator を使用)
      • 要素の削除
Java の入出力とストリーム

Passons à la pratique !

Java の入出力とストリーム

Preparing Video For Download...