ストリーム入門

Java の入出力とストリーム

Alex Liu

Software Development Engineer

Streams を扱う

  • Java の Streams

    • データコレクションを関数型に処理し、大規模データ性能を向上
    • 対応コレクション:
      • List(例: ArrayList, LinkedList
      • Set(例: HashSet, TreeSet
      • Map(Keys/ValuesStreams として)(例: HashMap, TreeMap
      • 配列(Arrays.stream()
  • 以降で使用する ArrayListnames

    names: ["Alice", "Bob", "Charlie", "David"]
    
Java の入出力とストリーム

Stream でラムダ式を使う

  • ラムダ式
    • 構文: (parameters) -> { expression }
names.forEach(
    // `name` is a parameter representing each element in the list
    name -> 
        // This is the expression executed for each element.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Java の入出力とストリーム

Stream の作成

  • コレクションを Stream に変換

    • コレクションで .stream() を使用
    • ListSetQueue をサポート
  • Stream クラスをインポート

    import java.util.stream.Stream;
    
  • サンプル names をストリームにして .forEach() で各要素にアクセス
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Java の入出力とストリーム

Streams でデータをフィルタリング

  • .filter() で要素を選択
    • 一致する要素のみ保持
  • サンプル names をストリーム化
    Stream<String> stream = names.stream();
    
  • A で始まる要素を .filter() で抽出し、.forEach() で出力
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • フィルタ結果: Alice
Java の入出力とストリーム

Streams で要素数をカウント

  • 要素数を数えるには .count() を使用

    • 返り値は long
  • サンプル names をストリーム化

    Stream<String> stream = names.stream();
    
  • B で始まる要素を .filter() で抽出し、.count() で数える

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • 結果: 1(Bob のみが B で開始)

Java の入出力とストリーム

Streams を使うべきとき

  • Streams を使う場面:
    • 大規模データ: オーバーヘッドを抑える
    • 関数型処理: ループより読みやすい
    • フィルタ・変換: コードを簡潔に
  • Streams を使わない場面:
    • 元のコレクションを変更するとき
    • 副作用のある単純なループ
Java の入出力とストリーム

Passons à la pratique !

Java の入出力とストリーム

Preparing Video For Download...