Java

スポンサーリンク
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>) — 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 ...
スポンサーリンク