JavaのStream APIにおける主要なメソッドを20個ご紹介します。Stream APIはデータ処理において非常に強力なツールであり、これらのメソッドをマスターすることで、コードの効率性と可読性を大きく向上させることができます。
- filter(Predicate<T>)
- 用途: 条件を満たす要素だけを含む新しいストリームを生成。
- 例:
stream.filter(x -> x > 5)
– 5より大きい要素のみを含むストリームを生成。
- map(Function<T, R>)
- 用途: 各要素に関数を適用し、結果を含む新しいストリームを生成。
- 例:
stream.map(x -> x * x)
– 各要素を自身で乗算。
- sorted()
- 用途: 要素を自然順序でソート。
- 例:
stream.sorted()
– 要素を自然順序でソート。
- collect(Collector<T,A,R>)
- 用途: ストリームをリスト、セット、マップなどのコレクションに変換。
- 例:
stream.collect(Collectors.toList())
– ストリームをリストに変換。
- forEach(Consumer<T>)
- 用途: 各要素にアクションを実行。
- 例:
stream.forEach(System.out::println)
– 各要素を出力。
- reduce(BinaryOperator<T>)
- 用途: 要素に累積操作を行い、単一の結果を生成。
- 例:
stream.reduce(0, (a, b) -> a + b)
– 要素の合計を計算。
- limit(long)
- 用途: ストリームを指定されたサイズに制限。
- 例:
stream.limit(5)
– 最初の5つの要素のみを含む。
- skip(long)
- 用途: 最初のn個の要素をスキップ。
- 例:
stream.skip(5)
– 最初の5つの要素をスキップ。
- anyMatch(Predicate<T>)
- 用途: 少なくとも1つの要素が条件を満たすかどうかを判断。
- 例:
stream.anyMatch(x -> x > 5)
– 5より大きい要素が存在するかをチェック。
- allMatch(Predicate<T>)
- 用途: すべての要素が条件を満たすかどうかを判断。
- 例:
stream.allMatch(x -> x > 5)
– すべての要素が5より大きいかをチェック。
- distinct()
- 用途: 重複する要素を除去。
- 例:
stream.distinct()
– 重複する要素を取り除いたストリーム。
- flatMap(Function<T, Stream<R>>)
- 用途: 各要素に関数を適用し、ストリームを平坦化。
- 例:
stream.flatMap(x -> x.stream())
– 要素がコレクションの場合、平坦化。
- peek(Consumer<T>)
- 用途: 各要素にアクションを実行し、ストリームをそのまま返す(デバッグ用)。
- 例:
stream.peek(System.out::println)
– 各要素を出力しつつストリームを通過。
- noneMatch(Predicate<T>)
- 用途: どの要素も条件を満たさないかをチェック。
- 例:
stream.noneMatch(x -> x < 0)
– 負の要素がないかをチェック。
- findFirst()
- 用途: 最初の要素をOptionalで返す。
- 例:
stream.findFirst()
– 最初の要素を取得。
- findAny()
- 用途: 並列処理で任意の要素をOptionalで返す。
- 例:
stream.findAny()
– 任意の要素を取得。
- count()
- 用途: 要素の総数をカウント。
- 例:
stream.count()
– 要素の数をカウント。
- max(Comparator<T>)
- 用途: 最大の要素をOptionalで返す。
- 例:
stream.max(Comparator.naturalOrder())
– 最大要素を取得。
- min(Comparator<T>)
- 用途: 最小の要素をOptionalで返す。
- 例:
stream.min(Comparator.naturalOrder())
– 最小要素を取得。
- toArray()
- 用途: 要素を配列に変換。
- 例:
stream.toArray()
– 要素を配列に変換。
これらのメソッドは、データ処理の多様なシナリオで活用できます。Stream APIのこれらのメソッドを理解し、うまく活用することで、コードの効率と可読性を大幅に向上させることができる。