java.lang.Object
java.util.stream.Gatherers
-
メソッドのサマリー
修飾子と型メソッド説明fold
(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> folder) コンビナ関数を実装できないシナリオ、または本質的に順序に依存する削減に対して、順序付けされたreduction-like変換を実行するGathererを返します。mapConcurrent
(int maxConcurrency, Function<? super T, ? extends R> mapper) 「仮想スレッド」を使用して、構成されたレベルの最大同時実行性でファンクションを同時に実行する操作。scan
(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> scanner) プリフィクス・スキャンを実行するGathererを返します -- 増分蓄積 -- 提供された機能を使用する。windowFixed
(int windowSize) ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 固定サイズです。windowSliding
(int windowSize) ウィンドウに要素を収集するGathererを返します -- 要素の検出順序のグループ -- 特定のサイズ。後続の各ウィンドウには、最新のウィンドウを除く前のウィンドウのすべての要素が含まれ、ストリームに次の要素が追加されます。
-
メソッドの詳細
-
windowFixed
ウィンドウに要素を収集する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
ウィンドウに要素を収集する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,?, foldR> (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,?, scanR> (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,?, mapConcurrentR> (int maxConcurrency, Function<? super T, ? extends R> mapper) 「仮想スレッド」を使用して、構成されたレベルの最大同時実行性でファンクションを同時に実行する操作。 この操作では、ストリームの順序が保持されます。- APIのノート:
- 進行中のタスクは、ベスト・エフォート・ベースで、ダウンストリームがさらに要素を受け取ることを望まない状況で取り消されます。
- 実装要件:
- ファンクションの結果がダウンストリームにプッシュされるが、かわりにファンクションが例外的に完了した場合、対応する例外はかわりに
RuntimeException
のインスタンスとしてこのメソッドによって再スローされ、その後残りのタスクは取り消されます。 - 型パラメータ:
T
- 入力のタイプR
- 出力のタイプ- パラメータ:
maxConcurrency
- 必要な最大同時実行性mapper
- 同時に実行される関数- 戻り値:
- 新しいGatherer
- 例外:
IllegalArgumentException
-maxConcurrency
が1未満の場合NullPointerException
-mapper
がnull
の場合
-
Gatherers
を使用できます。