二分木 (Binary Tree) を Java で自作する — BST / 走査 / バランス崩れの実例
二分木、特に二分探索木 (BST) を Generics で実装。挿入・探索・削除の計算量、3 種類の走査、偏った木がなぜ遅くなるかとその対策 (AVL / Red-Black Tree) まで。
Category
データ構造・アルゴリズム・デザインパターン・CS 基礎
二分木、特に二分探索木 (BST) を Generics で実装。挿入・探索・削除の計算量、3 種類の走査、偏った木がなぜ遅くなるかとその対策 (AVL / Red-Black Tree) まで。
連結リストを Generics で自前実装しつつ、ArrayList との計算量・メモリ・キャッシュ効率の比較、現代の Java でこの構造を選ぶ数少ない場面を整理する。
Factory Method との違いを 1 分で整理し、OS 別 UI / DB 別 Repository / テナント別実装など、実務での使いどころを示す。
コンストラクタ引数が多いクラスの可読性を救う Builder。手書き・Lombok・record の併用パターンと、Fluent Builder でよくあるハマり所。
既存インスタンスを複製して「型 + 設定済み」を使い回す Prototype。Java の Cloneable の闇と、現代的な代替 (copy constructor / toBuilder / record withers)。
伝統的な Singleton の 4 実装と、各々のスレッド安全性・シリアライズ耐性・リフレクション耐性。結論として現代は enum Singleton で終わり。
インスタンス生成の種類を抽象側に閉じ込める Factory Method パターン。JDK/Spring の実例、Simple Factory との違い、現代 Java での書き方まで。
処理の骨格は親、差分は子に書き分ける Template Method。Spring の `*Template` 系の設計思想と、Strategy / Decorator との使い分け。
既存の API を自分たちのドメインに合わせて包むアダプタ。クラスアダプタ vs オブジェクトアダプタ、SLF4J や Spring の HandlerAdapter などの実例まで。
GoF の Iterator パターンを Java で書くときの最小実装。拡張 for 文、Spliterator、Stream との関係まで整理する。
GoF の 23 パターンから、現代の Java 開発で実際に効くものを選別する指針と、Spring/JDK で見つかる実例マップ。