クラスGatherers

java.lang.Object
java.util.stream.Gatherers

public final class Gatherers extends Object
Gatherersは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでGatherersを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
ウィンドウ関数、折りたたみ関数、要素の同時変換など、有用な中間操作を提供するGathererPREVIEWの実装。
導入されたバージョン:
22
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    static <T, R> GathererPREVIEW<T,?,R>
    fold(Supplier<R> initial, BiFunction<? super R,? super T,? extends R> folder)
    コンビナ関数を実装できないシナリオ、または本質的に順序に依存する削減に対して、順序付けされたreduction-like変換を実行するGathererを返します。
    static <T, R> GathererPREVIEW<T,?,R>
    mapConcurrent(int maxConcurrency, Function<? super T,? extends R> mapper)
    「仮想スレッド」を使用して、構成されたレベルの最大同時実行性でファンクションを同時に実行する操作。
    static <T, R> GathererPREVIEW<T,?,R>
    scan(Supplier<R> initial, BiFunction<? super R,? super T,? extends R> scanner)
    プリフィクス・スキャンを実行するGathererを返します -- 増分蓄積 -- 提供された機能を使用する。
    static <TR> GathererPREVIEW<TR,?,List<TR>>
    windowFixed(int windowSize)
    ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 固定サイズです。
    static <TR> GathererPREVIEW<TR,?,List<TR>>
    windowSliding(int windowSize)
    ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 特定のサイズ。後続の各ウィンドウには、最新のウィンドウを除く前のウィンドウのすべての要素が含まれ、ストリームに次の要素が追加されます。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • windowFixed

      public static <TR> GathererPREVIEW<TR,?,List<TR>> windowFixed(int windowSize)
      ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 固定サイズです。 ストリームが空の場合、ウィンドウは作成されません。 最後のウィンドウには、指定されたウィンドウ・サイズより少ない要素が含まれる場合があります。

      例:

      // will contain: [[1, 2, 3], [4, 5, 6], [7, 8]]
      List<List<Integer>> windows =
          Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowFixed(3)).toList();
      

      APIのノート:
      効率上の理由から、ウィンドウは連続的かつ熱心に割り当てられる可能性があります。 つまり、小さいストリームに対して大きいウィンドウ・サイズを選択すると、この操作の評価期間に過剰なメモリーが使用される可能性があります。
      実装要件:
      生成される各ウィンドウは変更不可能なリストです。ミューテータ・メソッドを呼び出すと、常にUnsupportedOperationExceptionがスローされます。 作成済リストの実装タイプまたは直列化可能性に対する保証はありません。
      型パラメータ:
      TR - 戻されたギャザラが消費する要素のタイプと、それが生成するウィンドウの内容
      パラメータ:
      windowSize - ウィンドウのサイズ
      戻り値:
      要素を固定サイズのウィンドウにグループ化する新しいギャザラ
      例外:
      IllegalArgumentException - windowSizeが1未満の場合
    • windowSliding

      public static <TR> GathererPREVIEW<TR,?,List<TR>> windowSliding(int windowSize)
      ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 特定のサイズ。後続の各ウィンドウには、最新のウィンドウを除く前のウィンドウのすべての要素が含まれ、ストリームに次の要素が追加されます。 ストリームが空の場合、ウィンドウは作成されません。 ストリームのサイズがウィンドウのサイズより小さい場合、ストリーム内のすべての要素を含むウィンドウが1つのみ生成されます。

      例:

      // will contain: [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8]]
      List<List<Integer>> windows2 =
          Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowSliding(2)).toList();
      
      // will contain: [[1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8]]
      List<List<Integer>> windows6 =
          Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowSliding(6)).toList();
      

      APIのノート:
      効率上の理由から、ウィンドウは連続的かつ熱心に割り当てられる可能性があります。 つまり、小さいストリームに対して大きいウィンドウ・サイズを選択すると、この操作の評価期間に過剰なメモリーが使用される可能性があります。
      実装要件:
      生成される各ウィンドウは変更不可能なリストです。ミューテータ・メソッドを呼び出すと、常にUnsupportedOperationExceptionがスローされます。 作成済リストの実装タイプまたは直列化可能性に対する保証はありません。
      型パラメータ:
      TR - 戻されたギャザラが消費する要素のタイプと、それが生成するウィンドウの内容
      パラメータ:
      windowSize - ウィンドウのサイズ
      戻り値:
      要素をスライディング・ウィンドウにグループ化する新しいギャザラ
      例外:
      IllegalArgumentException - windowSizeが1未満の場合
    • fold

      public static <T, R> GathererPREVIEW<T,?,R> fold(Supplier<R> initial, BiFunction<? super R,? super T,? extends R> folder)
      コンビナ関数を実装できないシナリオ、または本質的に順序に依存する削減に対して、順序付けされたreduction-like変換を実行するGathererを返します。
      実装要件:
      処理中に例外がスローされない場合、この操作では単一の要素のみが生成されます。

      例:

      // will contain: Optional["123456789"]
      Optional<String> numberString =
          Stream.of(1,2,3,4,5,6,7,8,9)
                .gather(
                    Gatherers.fold(() -> "", (string, number) -> string + number)
                 )
                .findFirst();
      

      型パラメータ:
      T - 戻されたギャザラが消費する要素のタイプ
      R - 戻されるギャザラが生成する要素のタイプ
      パラメータ:
      initial - 折りたたみ操作のアイデンティティ値
      folder - 折り畳み機能
      戻り値:
      新しいGatherer
      例外:
      NullPointerException - いずれかのパラメータがnullの場合
      関連項目:
    • scan

      public static <T, R> GathererPREVIEW<T,?,R> scan(Supplier<R> initial, BiFunction<? super R,? super T,? extends R> scanner)
      プリフィクス・スキャンを実行するGathererを返します -- 増分蓄積 -- 提供された機能を使用する。 Supplierから取得した初期値から開始して、後続の各値は、BiFunctionを現在の値と次の入力要素に適用することで取得され、その後で結果の値がダウンストリームで生成されます。

      例:

      // will contain: ["1", "12", "123", "1234", "12345", "123456", "1234567", "12345678", "123456789"]
      List<String> numberStrings =
          Stream.of(1,2,3,4,5,6,7,8,9)
                .gather(
                    Gatherers.scan(() -> "", (string, number) -> string + number)
                 )
                .toList();
      

      型パラメータ:
      T - このギャザラが消費する要素のタイプ
      R - このギャザラが生成する要素のタイプ
      パラメータ:
      initial - スキャナの初期値のサプライヤ
      scanner - 各要素に適用する関数
      戻り値:
      プレフィクス・スキャンを実行する新しいGatherer
      例外:
      NullPointerException - いずれかのパラメータがnullの場合
    • mapConcurrent

      public static <T, R> GathererPREVIEW<T,?,R> mapConcurrent(int maxConcurrency, Function<? super T,? extends R> mapper)
      「仮想スレッド」を使用して、構成されたレベルの最大同時実行性でファンクションを同時に実行する操作。 この操作では、ストリームの順序が保持されます。
      APIのノート:
      進行中のタスクは、ベスト・エフォート・ベースで、ダウンストリームがさらに要素を受け取ることを望まない状況で取り消されます。
      実装要件:
      ファンクションの結果がダウンストリームにプッシュされるが、かわりにファンクションが例外的に完了した場合、対応する例外はかわりにRuntimeExceptionのインスタンスとしてこのメソッドによって再スローされ、その後残りのタスクは取り消されます。
      型パラメータ:
      T - 入力のタイプ
      R - 出力のタイプ
      パラメータ:
      maxConcurrency - 必要な最大同時実行性
      mapper - 同時に実行される関数
      戻り値:
      新しいGatherer
      例外:
      IllegalArgumentException - maxConcurrencyが1未満の場合
      NullPointerException - mappernullの場合