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 が多数ありますが、特殊な集約処理をした...
Java

Java 逆引き集 | ストリームでの例外処理パターン(ラップ処理) — checked 例外の扱い

ストリームでの例外処理パターン(ラップ処理) — checked 例外の扱いStream のラムダは基本的に checked 例外を投げられません。ファイルやネットワークなどの I/O をストリームの...
Java

Java 逆引き集 | Optional を返すストリーム処理パターン — null 安全

Optional を返すストリーム処理パターン — null 安全Java の Stream API は「結果があるかどうか分からない」処理をするときに Optional を返すメソッドを備えています...
Java

Java 逆引き集 | ファイルの行ストリーム処理(Files.lines) — 大規模ファイル処理

ファイルの行ストリーム処理(Files.lines) — 大規模ファイル処理Java NIO の Files.lines(Path) は、テキストファイルを 1行ずつストリームとして処理できる便利なメ...
Java

Java 逆引き集 | peek の使い方(デバッグ) — 中間ログ

peek の使い方(デバッグ) — 中間ログストリームの「途中」を覗いて、要素がどう変わっているかを確認するのが peek。中間操作としてログを差し挟めるので、フィルタや変換の結果を安全に観察できます...
Java

Java 逆引き集 | Stream 並列化の落とし穴(副作用) — スレッド安全性

Stream 並列化の落とし穴(副作用) — スレッド安全性Java の Stream API は .parallelStream() や .parallel() を使うと簡単に並列化できます。しかし...
Java

Java 逆引き集 | Collectors.toMap の衝突解決(mergeFunction) — Map 化での安全対策

Collectors.toMap の衝突解決(mergeFunction) — Map 化での安全対策Stream を Map に変換するとき、キー重複があると例外になります。Collectors.t...
Java

Java 逆引き集 | Stream.iterate(Java 9 の変化) — シーケンス生成

Stream.iterate(Java 9 の変化) — シーケンス生成Java 8 から導入された Stream.iterate は「初期値から次の値を生成していく」ための便利なメソッドです。Jav...
Java

Java 逆引き集 | range / rangeClosed(数値ストリーム) — 反復生成

range / rangeClosed(数値ストリーム) — 反復生成IntStream/LongStream には数値の連続を作るための range 系メソッドがあり、for ループより短く安全に「...
Java

Java 逆引き集 | IntStream/LongStream/DoubleStream(プリミティブストリーム) — オートボクシング回避

IntStream / LongStream / DoubleStream(プリミティブストリーム) — オートボクシング回避Java の Stream API には、Stream<Integer> ...
Java

Java 逆引き集 | anyMatch/allMatch/noneMatch — 条件検査

anyMatch / allMatch / noneMatch — 条件検査Stream API の終端操作である anyMatch / allMatch / noneMatch は、ストリームの要素...
Java

Java 逆引き集 | max/min/findFirst/findAny — 候補抽出

max / min / findFirst / findAny — 候補抽出Stream API には「候補をひとつ取り出す」ための便利な終端操作がいくつかあります。max/min は「最大値・最小値...
Java

Java 逆引き集 | summarizingInt/Long/Double — 統計情報を一発取得

summarizingInt / summarizingLong / summarizingDouble — 統計情報を一発取得Stream API の Collectors.summarizingI...
Java

Java 逆引き集 | partitioningBy(true/false に分割) — 二分集計

partitioningBy(true/false に分割) — 二分集計Stream API の Collectors.partitioningBy は「条件に合うかどうか」で true/false...
Java

Java 逆引き集 | joining(Collectors.joining) — 文字列結合

joining(Collectors.joining) — 文字列結合Stream API の Collectors.joining は、ストリームの要素を 文字列として結合するための便利な終端操作で...
Java

Java 逆引き集 | collect(Collectors.groupingBy(…)) — グルーピング集計

collect(Collectors.groupingBy(...)) — グルーピング集計Stream API の collect(Collectors.groupingBy(...)) は「キーご...
Java

Java 逆引き集 | reduce の使い方(集約) — 合算や累積計算

reduce の使い方(集約) — 合算や累積計算Stream の「結果をひとつに畳み込む」終端操作が reduce。合計・積・最大最小・連結・カスタム集約まで、柔軟に一行で書けます。初心者が迷う「初...
Java

Java 逆引き集 | distinct / limit / skip — 重複排除・ページング処理

distinct / limit / skip — 重複排除・ページング処理Stream API の中間操作でよく使うのが distinct(重複排除)、limit(先頭から指定件数だけ残す)、ski...
Java

Java 逆引き集 | filter・map・flatMap の使い分け — 条件絞りと展開

filter・map・flatMap の使い分け — 条件絞りと展開「要素を絞る・変換する・入れ子をほどく」をそれぞれ得意とするのが filter、map、flatMap。違いが腹落ちすると、無駄な中...
Java

Java 逆引き集 | Intermediate / Terminal 操作の理解 — パイプライン設計

Intermediate / Terminal 操作の理解 — パイプライン設計ストリームは「中間操作で加工し、終端操作で結果を取り出す」流れで動きます。中間は“つなぐ”、終端は“決着させる”。この違...
Java

Java 逆引き集 | Stream API の基本(stream(), filter, map, collect) — データ変換

Stream API の基本(stream(), filter, map, collect) — データ変換Java 8 以降で導入された Stream API は「コレクションを宣言的に処理する」た...
Java

Java 逆引き集 | Iterator vs Stream の使い分け(遅延評価・メモリ) — 性能設計

Iterator vs Stream の使い分け(遅延評価・メモリ) — 性能設計「大量データをどう処理するか」は設計の肝。Iterator は手続き的で軽量、Stream は宣言的で強力(遅延評価・...
Java

Java 逆引き集 | バッチ処理用チャンク分割(partitioning) — メモリ制御

バッチ処理用チャンク分割(partitioning) — メモリ制御大量データを「少しずつ」処理することで、メモリ使用量と失敗リスクを抑えるのがチャンク分割です。固定サイズで区切って読み・変換・書き込...
Java

Java 逆引き集 | 多次元配列と List<List<T>> の使い分け — 可変性と利便性

多次元配列と List<List<T>> の使い分け — 可変性と利便性Java では「二次元以上のデータ構造」を表す方法が大きく分けて2つあります。多次元配列(int, String など)入れ子の...
Java

Java 逆引き集 | Guava / Apache Commons Collections の利用(拡張ユーティリティ) — 実務ツール

Guava / Apache Commons Collections の利用(拡張ユーティリティ) — 実務ツール標準 Java コレクション API は基本的な機能を提供しますが、実務では「もう少し...
Java

Java 逆引き集 | Collections.newSetFromMap(Map を Set に変換) — カスタム Set 実装

Collections.newSetFromMap(Map を Set に変換) — カスタム Set 実装Java には Collections.newSetFromMap(Map<E,Boolea...
Java

Java 逆引き集 | ThreadLocal を使ったスレッド依存データ管理 — スレッド単位の状態

ThreadLocal を使ったスレッド依存データ管理 — スレッド単位の状態同じ変数名でも、各スレッドが「自分専用の値」を持てるのが ThreadLocal。リクエスト単位のトレースID、フォーマッ...
Java

Java 逆引き集 | Map の null キー/値対応(実装差) — 入出力検証

Map の null キー/値対応(実装差) — 入出力検証Map は実装ごとに「null を許すか」が違います。キーに null を入れると検索や equals/hashCode まわりで混乱しやす...
Java

Java 逆引き集 | コレクション間の差分(removeAll, retainAll) — 差分集計

コレクション間の差分(removeAll, retainAll) — 差分集計差分を取りたいときの定番が removeAll(差集合の除去)と retainAll(共通部分の保持)。どちらも「破壊的(...
Java

Java 逆引き集 | バッファ付きコレクション(LinkedList の代替) — メモリ/性能の考慮

バッファ付きコレクション(LinkedList の代替) — メモリ/性能の考慮「バッファ用途(キュー、先頭・末尾の出し入れ、スライディングウィンドウ)」で LinkedList を選びがちですが、実...
Java

Java 逆引き集 | トポロジカルソート(グラフ→依存解決) — ビルド順や依存解決

トポロジカルソート(グラフ→依存解決) — ビルド順や依存解決「依存関係を持つタスクを順序付けする」典型アルゴリズムが トポロジカルソート。Java での実装は、有向非巡回グラフ(DAG) を前提に、...
Java

Java 逆引き集 | Stream の無限ストリーム(iterate, generate) — データ生成

Stream の無限ストリーム(iterate, generate) — データ生成無限ストリームは「必要なだけ動的に作る」ための道具です。Stream.iterate は「前の値から次を作る連続生成...
Java

Java 逆引き集 | Map のビュー(keySet, values, entrySet)の使い分け — 効率的操作

Map のビュー(keySet, values, entrySet)の使い分け — 効率的操作Map の「ビュー」は中身をコピーせず、元の Map に直接つながった見え方を返します。ビュー経由での操作...
Java

Java 逆引き集 | Immutable wrappers と defensive copy パターン — API 安全性

Immutable wrappers と defensive copy パターン — API 安全性API 設計で「外部から渡されたコレクションや配列を勝手に書き換えられてしまう」問題を防ぐために使う...
Java

Java 逆引き集 | Arrays.copyOf / copyOfRange — 配列操作と拡張

Arrays.copyOf / copyOfRange — 配列操作と拡張配列を「丸ごとコピー」「サイズ変更」「一部だけ取り出す」を、安全に簡潔に書けるのが Arrays.copyOf と Array...
Java

Java 逆引き集 | Collections.swap / replaceAll — リスト操作の簡潔化

Collections.swap / replaceAll — リスト操作の簡潔化リスト要素の入れ替えや一括置換を「短く安全に」書けるのが Collections.swap と Collections...
Java

Java 逆引き集 | ListIterator(双方向反復) — 位置ベースの操作

ListIterator(双方向反復) — 位置ベースの操作ListIterator は List を前後どちらの方向にも走査でき、走査しながら安全に「挿入・削除・置換」ができる反復子です。カーソルは...
Java

Java 逆引き集 | Iterator.remove の正しい使い方 — ループ中の安全な削除

Iterator.remove の正しい使い方 — ループ中の安全な削除拡張 for 文で走査中に remove すると例外になりがち。安全に要素を削除したいときは、Iterator を使い、next...
Java

Java 逆引き集 | Stream の並列化(parallelStream)と注意点 — スレッド安全性

Stream の並列化(parallelStream)と注意点 — スレッド安全性並列 Stream は「ForkJoinPoolで要素を分割・並列処理・結合」する仕組みです。速くなることもありますが...
Java

Java 逆引き集 | コレクションの初期容量指定(負荷低減) — パフォーマンスチューニング

コレクションの初期容量指定(負荷低減) — パフォーマンスチューニング「どれくらい要素が入るか」をあらかじめ見積もれるなら、初期容量を指定しておくと再割り当て(拡張)や再ハッシュを減らせます。結果とし...
Java

Java 逆引き集 | Immutable key の要件(hashCode/equals 安定) — Map の鍵設計

Immutable key の要件(hashCode/equals 安定) — Map の鍵設計Map のキーは「一度入れたら同じまま」であることが大前提です。途中で変化すると検索できなくなったり、誤...
Java

Java 逆引き集 | サブリスト(subList)の注意点(ビュー) — 変更の影響範囲

サブリスト(subList)の注意点(ビュー) — 変更の影響範囲Java の List.subList(from, to) は「部分リスト」を返しますが、これは コピーではなく元リストのビュー(見え...
Java

Java 逆引き集 | 自然順序付け(Comparable) — デフォルトソート

自然順序付け(Comparable) — デフォルトソートJava の「自然順序付け」は、クラスが Comparable インターフェースを実装している場合に使われる「デフォルトの並び替えルール」です...
Java

Java 逆引き集 | Comparator の作り方(comparing, reversed, thenComparing) — ソートルール

Comparator の作り方(comparing, reversed, thenComparing) — ソートルール「主キー→副キー→さらに副キー」と、明快に並び替えルールを書けるのが Compa...
Java

Java 逆引き集 | FlatMap を使ったネスト解除 — ネスト構造展開

FlatMap を使ったネスト解除 — ネスト構造展開「配列の中に配列」「リストの中にリスト」「Optional の中に Optional」など、入れ子になった構造を一段に平らにするのが flatMa...
Java

Java 逆引き集 | PartitioningBy / GroupingBy(Collectors) — 集計・グループ化

PartitioningBy / GroupingBy(Collectors) — 集計・グループ化Stream の終端操作 collect における定番が partitioningBy(2分割)と ...
Java

Java 逆引き集 | Stream.collect(Collectors.toList()/toSet()/toMap()) — ストリーム結果変換

Stream.collect(Collectors.toList()/toSet()/toMap()) — ストリーム結果変換Stream の終端操作である collect は、加工した要素を Lis...
Java

Java 逆引き集 | Collections.frequency / disjoint などユーティリティ — コレクション比較

Collections.frequency / disjoint などユーティリティ — コレクション比較配列やリスト、セット同士を「重複数の比較」「共通要素の有無」「部分一致」などで比べたいとき、j...
Java

Java 逆引き集 | CopyOnWriteArrayList(読み取り多い並列環境) — 読み取り優先

CopyOnWriteArrayList(読み取り多い並列環境) — 読み取り優先書き込み時に「配列のコピー」を作って更新し、読み取りや反復を常に安全にするのが CopyOnWriteArrayLis...
Java

Java 逆引き集 | ConcurrentLinkedQueue(ロックフリーキュー) — 高スループット

ConcurrentLinkedQueue(ロックフリーキュー) — 高スループット複数スレッドから同時に追加・取得しても待ち時間がほぼ発生しない、ロックフリーな待ち行列が ConcurrentLin...
Java

Java 逆引き集 | IdentityHashMap(== でキー比較) — 特殊用途

IdentityHashMap(== でキー比較) — 特殊用途IdentityHashMap は Java の特殊な Map 実装で、キーの比較に equals() ではなく ==(参照同一性) を...
Java

Java 逆引き集 | WeakHashMap の利用ケース(キャッシュと GC) — メモリリーク防止

WeakHashMap の利用ケース(キャッシュと GC) — メモリリーク防止WeakHashMap は「キーを弱参照で保持する Map」。キーへの強参照が外部で途切れると、GC(ガベージコレクショ...
Java

Java 逆引き集 | NavigableMap / NavigableSet(近傍検索) — 前後関係の取得

NavigableMap / NavigableSet(近傍検索) — 前後関係の取得NavigableMap と NavigableSet は、ソート済みのデータ構造に「近傍検索(前後関係の取得)」...
Java

Java 逆引き集 | Deque(ArrayDeque) — 両端操作、高速スタック/キュー

Deque(ArrayDeque) — 両端操作、高速スタック/キューJava の Deque(Double Ended Queue)は「両端から追加・削除できる」データ構造です。代表的な実装が Ar...
Java

Java 逆引き集 | PriorityQueue(優先度キュー) — ジョブスケジューラ

PriorityQueue(優先度キュー) — ジョブスケジューラ優先度で「先に処理すべきもの」から取り出せるのが PriorityQueue。デフォルトでは最小値が先頭の最小ヒープ構造で、自然順また...
Java

Java 逆引き集 | イミュータブルコレクション(List.of, Map.of) — 不変の集合

イミュータブルコレクション(List.of, Map.of) — 不変の集合Java 9 以降では、List.of, Set.of, Map.of などの イミュータブル(不変)コレクション を簡単に...
Java

Java 逆引き集 | MultiMap パターン(Map <K, List<V>>) — 1対多管理

MultiMap パターン(Map<K, List<V>>) — 1対多管理Java の標準ライブラリには「MultiMap」というクラスはありません。しかし「1つのキーに複数の値を紐付けたい」場面は...
Java

Java 逆引き集 | Map のストリーム処理(entrySet→stream) — キー/値単位処理

Map のストリーム処理(entrySet→stream) — キー/値単位処理Mapは「キー→値」のペアを扱う構造。Stream APIと組み合わせると、条件抽出、並べ替え、集計が短く安全に書けます...
Java

Java 逆引き集 | Map.computeIfAbsent / compute / merge — 集計ロジック簡潔化

Map.computeIfAbsent / compute / merge — 集計ロジック簡潔化「存在チェック→取得→更新→再格納」の冗長なコードを、1行の原子操作で置き換えるのが computeI...
Java

Java 逆引き集 | Collections.synchronizedList 等(同期ラッパー) — 古い同期方法

Collections.synchronizedList 等(同期ラッパー) — 古い同期方法読み書きが同時に起きる環境で、既存の可変コレクションを「ひとまず安全に」使いたいときに使うのが同期ラッパー...
Java

Java 逆引き集 | Arrays クラスユーティリティ(sort / binarySearch) — 配列操作

Arrays クラスユーティリティ(sort / binarySearch) — 配列操作配列の並べ替えと検索は「まずソートしてから二分探索」が基本。Java の java.util.Arrays は...
Java

Java 逆引き集 | Collections.shuffle / sort / reverse — リスト操作ユーティリティ

Collections.shuffle / sort / reverse — リスト操作ユーティリティリストの「並び替え」「逆順」「ランダム化」を一発でやれるのが Collections ユーティリテ...
Java

Java 逆引き集 | Collections.unmodifiableList 等(読み取り専用ラッパー) — API 返却時の安全性

Collections.unmodifiableList 等(読み取り専用ラッパー) — API 返却時の安全性外部にコレクションを返すとき「勝手に書き換えられない」ようにするのが読み取り専用ラッパー...
Java

Java 逆引き集 | ConcurrentHashMap (スレッド安全な Map) — マルチスレッド環境

ConcurrentHashMap(スレッド安全な Map) — マルチスレッド環境並行処理で「キー→値」を共有したいなら、まずは ConcurrentHashMap。ロックを最小限に抑えた設計で、高...
Java

Java 逆引き集 | EnumMap / EnumSet の活用(enum 最適化) — 小さい高速マップ/集合

EnumMap / EnumSet の活用(enum 最適化) — 小さい高速マップ/集合Java には「列挙型(enum)」専用に最適化されたコレクションが用意されています。それが EnumMap ...
Java

Java 逆引き集 | HashSet の特性と重複排除 — 一意性保持

HashSet の特性と重複排除 — 一意性保持Java の HashSet は「重複を許さない集合」を表すクラスです。初心者が理解すべきポイントは「一意性保持」「順序が保証されない」「検索が速い」と...
Java

Java 逆引き集 | TreeMap(ソートされた Map) — 範囲検索

TreeMap(ソートされた Map) — 範囲検索TreeMap は Java の Map 実装のひとつで、キーを自動的にソートして保持するのが特徴です。初心者が理解すべきポイントは「キーが常に昇順...
Java

Java 逆引き集 | LinkedHashMap(挿入順/アクセス順保持) — LRU 実装の簡易版

LinkedHashMap(挿入順/アクセス順保持) — LRU 実装の簡易版Java の LinkedHashMap は、HashMap に「順序保持機能」を追加したものです。初心者が理解すべきポイ...
Java

Java 逆引き集 | HashMap の基本(キーのハッシュ化) — 索引付き検索

HashMap の基本(キーのハッシュ化) — 索引付き検索Java で「キーと値のペア」を効率的に管理する代表的なコレクションが HashMap です。初心者が理解すべきポイントは「キーをハッシュ化...
Java

Java 逆引き集 | LinkedList の使いどころ(頻繁な先頭/中間挿入) — キュー実装

LinkedList の使いどころ(頻繁な先頭/中間挿入) — キュー実装Java で「リスト構造」を扱うとき、ArrayList と LinkedList が代表的です。初心者が理解すべきポイントは...
Java

Java 逆引き集 | ArrayList の使いどころと性能(ランダムアクセス重視) — 一覧管理

ArrayList の使いどころと性能(ランダムアクセス重視) — 一覧管理Java で「一覧管理」をする際によく使うのが ArrayList。初心者がまず理解すべきは「どんな場面で使うか」「性能の特...
Java

Java 逆引き集 | コードスタイルとフォーマッタ(一定の規約) — チーム開発品質

コードスタイルとフォーマッタ(一定の規約) — チーム開発品質チーム開発では「コードの書き方が人によってバラバラ」だとレビューや保守が大変になります。そこで コードスタイルの統一 と フォーマッタの利...
Java

Java 逆引き集 | 単体テストを意識した設計(DI, インターフェース分離) — テスト容易性

単体テストを意識した設計(DI, インターフェース分離) — テスト容易性単体テストをしやすくするための設計の基本が 依存注入(DI: Dependency Injection) と インターフェース...
Java

Java 逆引き集 | バージョン互換(Java のメジャーアップでの注意) — 移行計画

バージョン互換(Java のメジャーアップでの注意) — 移行計画大きな Java のアップグレードでは「非互換のポイント」を見逃すと本番障害に直結します。LTSの選び方、削除・非推奨機能、セキュリテ...
Java

Java 逆引き集 | Javadoc コメントの書き方 — API ドキュメント化

Javadocコメントの書き方 — APIドキュメント化Javadocは「コードからAPIドキュメント(HTML)を自動生成するためのコメント形式」。読み手に意図や契約を伝え、再利用性と保守性を高めま...
Java

Java 逆引き集 | サニタイズ(入力検証) — セキュリティと整合性

サニタイズ(入力検証) — セキュリティと整合性サニタイズ (sanitize) とは「外部から受け取った入力を安全に整える」こと。Webアプリや業務システムでは、ユーザー入力をそのまま使うと SQL...
Java

Java 逆引き集 | 最小特権の原則(アクセス制御) — セキュリティ基本

最小特権の原則(アクセス制御) — セキュリティ基本最小特権の原則 (Principle of Least Privilege) とは、「プログラムやユーザーに必要最小限の権限だけを与える」ことで、セ...
Java

Java 逆引き集 | toString の実装方針 — ログ/デバッグの可視化

toString の実装方針 — ログ/デバッグの可視化toString は「オブジェクトの状態を文字列で見える化」するための最重要メソッド。ログやデバッグで素早く状況把握できるよう、読みやすく・安全...
Java

Java 逆引き集 | equals / hashCode の正しい実装 — コレクションでの動作保証

equals / hashCode の正しい実装 — コレクションでの動作保証コレクション(HashSet/HashMap/HashTableなど)で正しく動かすには、equals と hashCod...
Java

Java 逆引き集 | 不変オブジェクトの作り方(Immutable) — スレッド安全

不変オブジェクトの作り方(Immutable) — スレッド安全「一度作ったら状態が変わらない」オブジェクトが不変(Immutable)。予期せぬ書き換えが起きないので、並行処理でも扱いやすく、コード...
Java

Java 逆引き集 | 依存注入(コンストラクタ注入の利点) — テスト容易性

依存注入(コンストラクタ注入の利点) — テスト容易性Javaでよく使われる設計パターンの一つが 依存注入(Dependency Injection, DI)。その中でも「コンストラクタ注入」は、テス...
Java

Java 逆引き集 | 簡単なユーティリティクラス作成(static メソッド) — 共通処理集約

簡単なユーティリティクラス作成(static メソッド) — 共通処理集約Javaでは「よく使う処理」を一箇所にまとめておくと便利です。そのために ユーティリティクラス を作り、static メソッド...
Java

Java 逆引き集 | 入出力のエンコーディング(UTF-8 など) — 文字化け防止

入出力のエンコーディング(UTF-8 など) — 文字化け防止文字化けの原因は「保存時の文字コード」と「読み込み時の文字コード」が一致していないこと。Javaでは 明示的にエンコーディングを指定するこ...
Java

Java 逆引き集 | 配列→コレクション変換(Arrays.asList 等) — API 互換

配列→コレクション変換(Arrays.asList 等) — API 互換Javaでは「配列」と「コレクション(List, Set, Mapなど)」がよく登場します。配列は固定長・基本的な構造、コレク...
Java

Java 逆引き集 | アルゴリズム基礎(ソート/検索の考え方) — パフォーマンス判断

アルゴリズム基礎(ソート/検索の考え方) — パフォーマンス判断プログラムでよく使う処理が ソート(並べ替え) と 検索(探す)。初心者がまず理解すべきは「どういう方法があるか」「どのくらい速いか(計...
Java

Java 逆引き集 | アサーション(assert) — デバッグ補助

アサーション(assert) — デバッグ補助Javaの アサーション(assert) は「プログラムの前提条件が正しいか」を実行時にチェックする仕組みです。バグを早期に発見するための補助機能であり、...
Java

Java 逆引き集 | リフレクション基礎(Class, Method) — フレームワーク開発/DI

リフレクション基礎(Class, Method) — フレームワーク開発/DIJavaの リフレクション(Reflection) は「クラスやメソッドを動的に調べたり呼び出したりする仕組み」です。通常...
Java

Java 逆引き集 | シリアライズ(Serializable の注意点) — 永続化/送受信

シリアライズ(Serializable の注意点) — 永続化 / 送受信Javaの シリアライズ は「オブジェクトをバイト列に変換して保存や送受信できるようにする」仕組みです。ファイル保存、ネットワ...
Java

Java 逆引き集 | リソース自動クローズ(try-with-resources) — リソース漏れ防止

リソース自動クローズ(try-with-resources) — リソース漏れ防止「使い終わったら必ず閉じる」を、言い忘れなく自動でやってくれる構文が try-with-resources。Java ...
Java

Java 逆引き集 | ロギングの基本(slf4j + Logback 等) — 運用ログ

ロギングの基本(slf4j + Logback 等) — 運用ログアプリケーションの「動作記録」を残すのがロギング。print文でのデバッグから卒業し、slf4j + Logback を使うと、運用に...
Java

Java 逆引き集 | 日付時間API(java.time: LocalDate/LocalDateTime/Duration) — 日時処理

日付時間API(java.time: LocalDate / LocalDateTime / Duration) — 日時処理日時は「正しく扱えるか」で品質が決まります。java.time(Java ...
Java

Java 逆引き集 | 文字列の正規表現(Pattern / Matcher) — テキスト検証

文字列の正規表現(Pattern / Matcher) — テキスト検証正規表現は「文字列がルールに合っているか」「欲しい部分だけ抜き出す」ための強力な道具。Javaでは java.util.rege...
Java

Java 逆引き集 | 型推論(var) — ローカル変数の簡潔化(Java 10+)

型推論(var) — ローカル変数の簡潔化(Java 10+)Java 10から導入された var は、ローカル変数の型をコンパイラに推論させる仕組みです。「型を明示しなくても、右辺から自動的に型が決...
Java

Java 逆引き集 | 可視性とパッケージ設計 — モジュール分離

可視性とパッケージ設計 — モジュール分離Javaでは アクセス修飾子(public / private / protected / default) と パッケージ構造 を組み合わせることで、コード...
Java

Java 逆引き集 | ワイルドカード(? extends / ? super) — API 汎用性

ワイルドカード(? extends / ? super) — API 汎用性Javaのジェネリクスには ワイルドカード という仕組みがあります。「型を柔軟に受け取る」ための記法で、APIの汎用性を高め...
Java

Java 逆引き集 | ジェネリクス基礎(型パラメータ) — 型安全なコレクション

ジェネリクス基礎(型パラメータ) — 型安全なコレクションJavaの ジェネリクス(Generics) は「型をパラメータ化」する仕組みです。コレクション(List, Map, Setなど)を使うとき...
Java

Java 逆引き集 | アノテーションの基礎(@Override 等) — メタ情報

アノテーションの基礎(@Override 等) — メタ情報Javaの アノテーション は「コードに付けるメタ情報(補足情報)」です。コンパイラやフレームワークに「この要素はこう扱ってほしい」と伝える...
Java

Java 逆引き集 | Enum の使い方(プロパティとメソッド) — 定数管理

Enum の使い方(プロパティとメソッド) — 定数管理「限られた選択肢」を型として安全に扱うのが enum。単なる定数集ではなく、プロパティやメソッドを持てる“小さなクラス”です。業務コードの「状態...
Java

Java 逆引き集 | 内部クラス(static / 非static / 匿名) — 小さなヘルパー実装

内部クラス(static / 非static / 匿名) — 小さなヘルパー実装Javaではクラスの中にさらにクラスを定義できます。これを 内部クラス(nested class) と呼びます。「外部ク...
Java

Java 逆引き集 | 抽象クラス vs インターフェース — API 設計の選択

抽象クラス vs インターフェース — API 設計の選択「共通の型をどう表すか」を決めるのが抽象クラスとインターフェース。どちらも“契約”を提供しますが、設計の狙いが少し違います。初心者でも迷わない...
Java

Java 逆引き集 | 継承とポリモーフィズム — 拡張性のある設計

継承とポリモーフィズム — 拡張性のある設計Javaのオブジェクト指向の柱が 継承 と ポリモーフィズム(多態性)。「共通部分を親にまとめる」「違いは子で表現する」ことで、拡張性と保守性が高まります。...
Java

Java 逆引き集 | クラス設計の基本(単一責任) — 保守性を高める

クラス設計の基本(単一責任) — 保守性を高める「クラスは、変わる理由を一つだけ持つ。」単一責任の原則は、この一文に尽きます。役割を一つに絞ると、変更の影響が限定され、読みやすくテストもしやすいコード...
Java

Java 逆引き集 | アクセス修飾子(public/private/protected/default) — カプセル化

アクセス修飾子(public / private / protected / default) — カプセル化Javaの アクセス修飾子 は「どこからそのクラスやメンバにアクセスできるか」を制御する仕...
Java

Java 逆引き集 | final の使い方(変数・クラス・メソッド) — 不変性確保

final の使い方(変数・クラス・メソッド) — 不変性確保Javaの final は「これ以上変更できない」という意味を持ちます。対象が 変数 か クラス か メソッド かによって効果が変わります...
Java

Java 逆引き集 | static とインスタンスの違い — 状態管理

Static とインスタンスの違い — 状態管理「static はクラスに属する」「インスタンスはオブジェクトに属する」。この一言が本質です。どの状態を“全体共有”にするか、“個別”にするかで、設計の...
Java

Java 逆引き集 | インスタンス生成(new)とファクトリパターンの基礎 — オブジェクト管理

インスタンス生成の基本(new)Javaでオブジェクトを作る最も基本的な方法は new。コンストラクタを呼び、必要な初期化を済ませて“使える状態”のインスタンスを得ます。class User { pr...
Java

Java 逆引き集 | 可変引数メソッド(…) - 汎用ユーティリティ

可変引数メソッド(...) — 汎用ユーティリティJavaでは、メソッドの引数の数が決まっていない場合に 可変長引数(varargs) を使えます。これにより「0個以上の引数」を柔軟に受け取ることがで...
Java

Java 逆引き集 | forEach とラムダの基本(簡単な処理) - 可読性向上

forEach とラムダの基本 — 可読性向上ラムダは「短く書ける無名の関数」、forEachは「コレクションの各要素に処理を当てる」ためのメソッドです。従来の for 文より読みやすく、意図が伝わり...
Java

Java 逆引き集 | List / Map / Set の基本概念(インターフェース) - データ構造選択

List / Map / Set の基本概念(インターフェース) — データ構造選択Javaのコレクションフレームワークには「データをどう扱うか」を決める基本インターフェースが用意されています。代表的...
Java

Java 逆引き集 | 配列(一次元・多次元) - 固定長データ処理

配列(一次元・多次元) — 固定長データ処理Javaの配列は「同じ型のデータをまとめて扱う箱」。サイズは固定で、宣言時に決めた長さを変えることはできません。一次元配列は「横一列」、多次元配列は「表や行...
Java

Java 逆引き集 | StringBuilder / StringBuffer - 文字列連結の効率化

StringBuilder / StringBuffer — 文字列連結の効率化文字列を何度も結合・加工する処理では、Stringの「不変性」が足かせになりがちです。StringBuilder と S...
Java

Java 逆引き集 | String 操作 - 表示・ログ処理

String 操作(concat, substring, format) — 表示・ログ処理文字列は「表示」「ログ」「メッセージ生成」で毎日のように使います。Javaの代表的な操作である concat...
Java

Java 逆引き集 | null/Optional の使い分け - NPE 回避、意図の明示

null/Optional の使い分け — NPE 回避、意図の明示Javaでよくあるバグの一つが NullPointerException (NPE)。「変数が null なのにメソッドを呼んでしま...
Java

Java 逆引き集 | カスタム例外の作り方 - 明確なエラー伝搬

カスタム例外の作り方 — 明確なエラー伝搬「何が問題か」を正確に伝えるのが例外の役割。標準例外だけでは業務の意図が伝わりにくい場面で、カスタム例外が活躍します。APIレイヤでは、呼び出し側が“何をどう...
Java

Java 逆引き集 | 例外処理(try / catch / finally) - 安定性と後始末

例外処理(try / catch / finally) — 安定性と後始末プログラムは「想定外のエラー」に出会うことがあります。ファイルが見つからない、数値が不正、ネットワークが切れる…。こうしたとき...
Java

Java 逆引き集 | 戻り値(参照/プリミティブ) - API レイヤ設計

戻り値(参照/プリミティブ) — API レイヤ設計メソッドは「処理の結果」を返すことができます。この結果を 戻り値 と呼びます。戻り値には プリミティブ型(int, double, boolean ...
Java

Java 逆引き集 | メソッド定義と引数(可変長引数) - 再利用可能ロジック

メソッド定義と引数(可変長引数) — 再利用可能ロジックプログラムを整理して「同じ処理を何度も使えるようにする」のが メソッド。引数は「外から渡す材料」。可変長引数は「材料の数が決まっていないとき」に...
Java

Java 逆引き集 | ループ(for / enhanced for / while) - 集合処理とレコードループ

ループ(for / enhanced for / while) — 集合処理とレコードループ同じ処理を繰り返すとき、Javaでは主に for、enhanced for(拡張 for)、while を使...
Java

Java 逆引き集 | 条件分岐(if / switch) - ビジネスロジックの分岐

条件分岐(if / switch) — ビジネスロジックの分岐プログラムは「状況に応じて処理を変える」ことが多いです。Javaでは代表的に if文 と switch文 を使います。初心者向けに「どんな...
Java

Java 逆引き集 | 型変換(キャスト、ボクシング/アンボクシング) - データ受け渡し時

型変換の概要(キャスト/ボクシング/アンボクシング)異なる型どうしでデータを受け渡すとき、Javaは「キャスト(型変換)」で数値型を変えたり、「ボクシング/アンボクシング」でプリミティブ型とラッパー型...
Java

Java 逆引き集 | 変数宣言(プリミティブ/参照型) - 型選びと初期化

変数宣言の基本Javaの変数は「型 名称 = 初期値;」の形で宣言します。型は“何を入れる箱か”を決めるもの。プリミティブ型は値そのものを、参照型は“モノが置いてある場所(アドレス)”を持ちます。//...
スポンサーリンク