S-JIS[2025-03-19] 変更履歴
|
Java24(プレビュー版ではJava22〜23)で、Stream用のGatherersクラスが新設された。
Streamの「汎用の終端処理であるcollectメソッド」にCollectorsクラスのメソッドを渡して使用するのと同様に、
「汎用の中間処理であるgatherメソッド」にGatherersクラスのメソッドを渡して使用する。
Gatherersクラスには、Stream#gather(Gatherer)メソッドに渡すGathererインターフェースの具象クラス(を返すメソッド)が用意されている。
import java.util.stream.Gatherers;
メソッド | ver | 戻り型 | 引数 | 説明 | 例 | ||
---|---|---|---|---|---|---|---|
コーディング | 結果 | ||||||
windowFixed |
24 | Gatherer<TR, ?, List<TR>> |
int |
windowSize |
windowSizeずつ区切ったリストに変換する。 | Stream<Integer> stream =
Stream.of(1,2,3,4,5,6,7,8); |
[[1, 2, 3], [4, 5, 6], [7, 8]] |
windowSliding |
24 | Gatherer<TR, ?, List<TR>> |
int |
windowSize |
windowSizeずつスライドしたリストに変換する。 | Stream<Integer> stream =
Stream.of(1,2,3,4,5,6,7,8); |
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8]] |
fold |
24 | Gatherer<T, ?, R> |
() -> R |
initial |
値を集約する。 (→Collectors.reducing) |
Stream<Integer> stream =
Stream.of(1,2,3,4); |
Optional[1234] |
(R, T) -> R |
folder |
||||||
scan |
24 | Gatherer<T, ?, R> |
() -> R |
initial |
Prefix Scanを実行する。 (直前の演算結果に対して演算していく) |
Stream<Integer> stream =
Stream.of(1,2,3,4); |
[1, 12, 123, 1234] |
(R, T) -> R |
scanner |
||||||
mapConcurrent |
24 | Gatherer<T, ?, R> |
int |
maxConcurrency |
仮想スレッドを使って並列に変換する。 (→Stream.map) |
Stream<String> stream =
Stream.of("a.txt", "b.txt"); |
[a.txt, b.txt] |
T -> R |
mapper |