Stream APIの主要メソッド20選

JavaのStream APIにおける主要なメソッドを20個ご紹介します。Stream APIはデータ処理において非常に強力なツールであり、これらのメソッドをマスターすることで、コードの効率性と可読性を大きく向上させることができます。

  1. filter(Predicate<T>)
    • 用途: 条件を満たす要素だけを含む新しいストリームを生成。
    • 例: stream.filter(x -> x > 5) – 5より大きい要素のみを含むストリームを生成。
  2. map(Function<T, R>)
    • 用途: 各要素に関数を適用し、結果を含む新しいストリームを生成。
    • 例: stream.map(x -> x * x) – 各要素を自身で乗算。
  3. sorted()
    • 用途: 要素を自然順序でソート。
    • 例: stream.sorted() – 要素を自然順序でソート。
  4. collect(Collector<T,A,R>)
    • 用途: ストリームをリスト、セット、マップなどのコレクションに変換。
    • 例: stream.collect(Collectors.toList()) – ストリームをリストに変換。
  5. forEach(Consumer<T>)
    • 用途: 各要素にアクションを実行。
    • 例: stream.forEach(System.out::println) – 各要素を出力。
  6. reduce(BinaryOperator<T>)
    • 用途: 要素に累積操作を行い、単一の結果を生成。
    • 例: stream.reduce(0, (a, b) -> a + b) – 要素の合計を計算。
  7. limit(long)
    • 用途: ストリームを指定されたサイズに制限。
    • 例: stream.limit(5) – 最初の5つの要素のみを含む。
  8. skip(long)
    • 用途: 最初のn個の要素をスキップ。
    • 例: stream.skip(5) – 最初の5つの要素をスキップ。
  9. anyMatch(Predicate<T>)
    • 用途: 少なくとも1つの要素が条件を満たすかどうかを判断。
    • 例: stream.anyMatch(x -> x > 5) – 5より大きい要素が存在するかをチェック。
  10. allMatch(Predicate<T>)
    • 用途: すべての要素が条件を満たすかどうかを判断。
    • 例: stream.allMatch(x -> x > 5) – すべての要素が5より大きいかをチェック。

  1. distinct()
    • 用途: 重複する要素を除去。
    • 例: stream.distinct() – 重複する要素を取り除いたストリーム。
  2. flatMap(Function<T, Stream<R>>)
    • 用途: 各要素に関数を適用し、ストリームを平坦化。
    • 例: stream.flatMap(x -> x.stream()) – 要素がコレクションの場合、平坦化。
  3. peek(Consumer<T>)
    • 用途: 各要素にアクションを実行し、ストリームをそのまま返す(デバッグ用)。
    • 例: stream.peek(System.out::println) – 各要素を出力しつつストリームを通過。
  4. noneMatch(Predicate<T>)
    • 用途: どの要素も条件を満たさないかをチェック。
    • 例: stream.noneMatch(x -> x < 0) – 負の要素がないかをチェック。
  5. findFirst()
    • 用途: 最初の要素をOptionalで返す。
    • 例: stream.findFirst() – 最初の要素を取得。
  6. findAny()
    • 用途: 並列処理で任意の要素をOptionalで返す。
    • 例: stream.findAny() – 任意の要素を取得。
  7. count()
    • 用途: 要素の総数をカウント。
    • 例: stream.count() – 要素の数をカウント。
  8. max(Comparator<T>)
    • 用途: 最大の要素をOptionalで返す。
    • 例: stream.max(Comparator.naturalOrder()) – 最大要素を取得。
  9. min(Comparator<T>)
    • 用途: 最小の要素をOptionalで返す。
    • 例: stream.min(Comparator.naturalOrder()) – 最小要素を取得。
  10. toArray()
    • 用途: 要素を配列に変換。
    • 例: stream.toArray() – 要素を配列に変換。

これらのメソッドは、データ処理の多様なシナリオで活用できます。Stream APIのこれらのメソッドを理解し、うまく活用することで、コードの効率と可読性を大幅に向上させることができる。