Java

スポンサーリンク
Java

Java 逆引き集 | ストリーム処理の設計ガイドライン(副作用禁止等) — 保守性向上

ねらいと基本原則ストリーム処理の保守性は「副作用を禁じる」「遅延評価を味方にする」「結合可能な集約を選ぶ」の三本柱で決まります。中間操作は純粋関数(入力だけに依存し、外部状態を変更しない)に徹し、副作...
Java

Java 逆引き集 | Stream を用いたデータ整形パイプライン設計 — パイプラインアーキテクチャ

ねらいと基本方針データ整形パイプラインは「取り込み → 正規化 → 検証 → 集約/変換 → 出力」の流れを、安全に、短く、遅延評価で組み立てる設計です。Stream を軸にすると、巨大データでもメモ...
Java

Java 逆引き集 | parallelStream のベンチマーク方法 — 実運用での検証

ねらいと前提parallelStream は「並列化すれば常に速い」魔法ではありません。効果が出る条件と落とし穴を理解し、順次と並列を同じ環境・同じ入力で比較するのが基本です。並列ストリームは For...
Java

Java 逆引き集 | Stream を使った CSV → オブジェクト変換 — ETL の簡潔化

ねらいと前提CSV をオブジェクトへ変換する ETL は「読み取り → クリーニング → 変換 → 検証 → 出力」の流れです。Stream を使えば、行を遅延で処理しながら宣言的に書けるため、巨大フ...
Java

Java 逆引き集 | lazy evaluation の理解(中間操作は遅延) — 無駄な処理回避

ねらいと前提Stream の中間操作(filter, map, sorted など)は「遅延評価」です。つまり、終端操作(collect, forEach, count など)が呼ばれるまで実行されま...
Java

Java 逆引き集 | Stream と Optional の良い組み合わせ — 値の有無ハンドリング

ねらいと前提値が「あるかもしれない/ないかもしれない」場面で、Optional は null 安全を保ちながら表現できます。Stream は「たくさんの値」を宣言的に流せます。この二つをうまく組み合わ...
Java

Java 逆引き集 | Stream API によるツリー/グラフ探索(再帰を使わないパターン) — 非再帰探索

ねらいと前提ツリー/グラフ探索は「親→子(隣接)」へ辿る処理です。再帰は直感的ですが、スタックあふれや制御の難しさが出ます。非再帰パターンでは、キュー(BFS)やスタック(DFS)を使って自分で「探索...
Java

Java 逆引き集 | reduce で複合オブジェクト集約 — ドメイン集計

ねらいと前提reduce は「ストリームの全要素をひとつの結果へ畳み込む」終端操作です。ドメイン集計では単なる数値の和ではなく、複数フィールドを持つ複合オブジェクト(件数・合計・最小・最大・補助メモな...
Java

Java 逆引き集 | ストリームでの並列グループ化(groupingByConcurrent) — 並列集計

ねらいと前提並列ストリームで「キーごとに集計」するなら、Collectors.groupingByConcurrent が最短で安全です。並列対応の ConcurrentHashMap を内部に使い、...
Java

Java 逆引き集 | キャッシング Collector(memoizing)パターン — 重い計算の最適化

目的と前提「重い計算」をストリームの中で何度も呼ぶと、CPUが燃え、待ち時間が伸び、並列化しても効果が出ません。キャッシング(memoizing)パターンは、同じ入力に対する結果を再利用して、計算を最...
Java

Java 逆引き集 | ストリームのデバッグ技(ログ出力・中間確認) — トラブルシュート

ねらいと前提「ストリームがどこでどう変わっているか」を素早く可視化できると、原因特定が一気に速くなります。中間確認の王道は peek と「小さく材質化(toList など)」の使い分けです。重要なのは...
Java

Java 逆引き集 | Stream と SQL の比較(いつ DB で処理すべきか) — 負荷分散判断

目的と前提「アプリ側で Stream に流すか、DB 側で SQL に任せるか」を正しく判断できると、性能・コスト・保守性が一気に安定します。根本の考え方はシンプルです。データ量が大きいほど「近いとこ...
Java

Java 逆引き集 | 組み合わせ生成(combinatorics via stream) — テストデータ作成

ねらいと基本指針テストデータを作るとき、組み合わせ(直積・順列・組合せ)を手早く生成できると検証の幅が一気に広がります。Java の Stream は「宣言的・短絡・遅延実行」が武器。巨大な結果を丸ご...
Java

Java 逆引き集 | Windowing(スライディング窓)パターン実装 — 時系列処理

目的と前提大量データを Stream で処理するとき、ボトルネックは「CPUよりメモリ」になりがちです。推定でも十分なので、どれだけメモリを消費するかを見積もり、材質化(toList/toMap)を最...
Java

Java 逆引き集 | Windowing(スライディング窓)パターン実装 — 時系列処理

目的と前提時系列処理で「連続 N 件」「直近 N 秒」のように、一定範囲のデータを滑らせながら集計するのがスライディング窓(windowing)です。Java 標準の Stream API には専用ウ...
Java

Java 逆引き集 | イテレータ→ストリームの変換(StreamSupport) — 外部API統合

目的と前提外部APIが Iterator(または Iterable)しか返さないときでも、Stream に変換すれば filter・map・collect などの強力な処理を宣言的に書けます。鍵になる...
Java

Java 逆引き集 | 並列 reduce の適切な設計(結合可能な演算) — 正しさの担保

目的と前提並列 reduce を正しく設計する鍵は「結合可能(結合律を満たす)な演算」と「適切な単位元(identity)」、そして「accumulator と combiner の整合性」です。並列...
Java

Java 逆引き集 | Stream サプライヤーパターン(Supplier を用いる) — 再生成可能性

目的と前提ストリームは「一度流したら終わり」の一回性を持ちます。同じパイプラインで複数の終端操作(count と toList など)をしたい、あるいは同じフィルタや変換を繰り返し適用したい場面では、...
Java

Java 逆引き集 | ストリームチェーンの分割と再利用 — 可読性/保守性

ねらいと基本原則ストリームは「1回流して終わり」の使い捨てモデルです。可読性と保守性を高めたいなら、再利用すべきはストリームそのものではなく「処理の定義(Predicate/Function/Coll...
Java

Java 逆引き集 | ストリームでのランダムアクセスの落とし穴 — パフォーマンス評価

概要と本質ストリームは「順次走査」に強く、「ランダムアクセス」に弱い仕組みです。配列や ArrayList のようなランダムアクセス向きのデータ構造でも、ストリームに乗せるとインデックス指定は基本的に...
Java

Java 逆引き集 | サードパーティライブラリ(jOOλ 等)の活用 — ストリーム拡張

ポイントまとめJava 標準の Stream API は便利ですが、制約もあります。サードパーティライブラリ jOOλ(jOOL) を使うと、タプル型や拡張関数、例外処理の簡略化などが可能になり、St...
Java

Java 逆引き集 | Stream を使った行列変換(transpose) — データ整形

Stream を使った行列変換(transpose) — データ整形「行列の転置(transpose)」とは、行と列を入れ替える操作です。例えば 2×3 の行列を転置すると 3×2 になります。Str...
Java

Java 逆引き集 | Stream の例外リカバリ戦略(fallback) — 途中失敗の処理

Stream の例外リカバリ戦略(fallback) — 途中失敗の処理ストリーム処理の途中で I/O や変換が失敗しても、処理全体を止めずに「回復」させるのが fallback。目的は「止めるべき失...
Java

Java 逆引き集 | IntSummaryStatistics の活用 — 集計情報取得の便利型

IntSummaryStatistics の活用 — 集計情報取得の便利型IntSummaryStatistics は「int の集計情報」をひとまとめに持つユーティリティです。件数・合計・最小値・最...
Java

Java 逆引き集 | Collector joining with delimiter/prefix/suffix — レポート生成

Collector.joining with delimiter/prefix/suffix — レポート生成Stream の要素を文字列としてまとめたいときに便利なのが Collectors.joi...
Java

Java 逆引き集 | flatMap を用いたネスト解除(OptionalやListのネスト) — 構造フラット化

flatMap を用いたネスト解除(OptionalやListのネスト) — 構造フラット化Stream API の flatMap は「入れ子になった構造をフラットにする」ための中間操作です。初心者...
Java

Java 逆引き集 | 並列ストリームでのコンテキスト保持(ThreadLocal の注意) — 意図しない挙動回避

並列ストリームでのコンテキスト保持(ThreadLocal の注意) — 意図しない挙動回避Java の並列ストリームは内部的に ForkJoinPool を使って複数スレッドで処理します。このとき「...
Java

Java 逆引き集 | ストリームの短絡(short-circuit)操作 — パフォーマンス最適化

ストリームの短絡(short-circuit)操作 — パフォーマンス最適化短絡操作は「必要な分だけ処理したら早めに打ち切る」ための仕組みです。無駄な計算や I/O を避け、スループットを上げる実戦テ...
Java

Java 逆引き集 | 並列ストリームと ForkJoinPool のチューニング — スループット向上

並列ストリームと ForkJoinPool のチューニング — スループット向上並列ストリームは「書き換え少なくCPUを使い切る」ための強力な選択肢。ただし闇雲な並列化は遅くなったり結果が壊れます。安...
Java

Java 逆引き集 | Collector.of でカスタム Collector 作成 — 特殊な集約

Collector.of でカスタム Collector 作成 — 特殊な集約Stream API の Collectors には便利な標準 Collector が多数ありますが、特殊な集約処理をした...
スポンサーリンク