コレクション

Java

【Java】JavaのOptionalでnullを安全に扱う方法

こんにちは、かつコーチです。「メソッドの戻り値がnullかもしれないから、呼び出し側で毎回nullチェックを書く」というのは、地味に手間がかかる作業です。今回はそんなnullチェックの負担を減らしてくれるOptionalの使い方を解説します...
Java

【Java】Javaのジェネリクス境界(extends・super)を使いこなす

こんにちは、かつコーチです。ジェネリクスの基本を押さえた上で、実務で必ずと言っていいほど遭遇するのが? extends Tと? super Tの使い分けです。今回はこの境界ワイルドカードを、PECS原則を軸に整理していきます。extends...
Java

【Java】Javaのジェネリクスの基本を初心者向けに解説

こんにちは、かつコーチです。List<String>のように山括弧を使う書き方は、Listの解説記事で何度も見てきたと思います。今回はこの山括弧の正体であるジェネリクスを、自分でクラスやメソッドを書く側の視点から解説していきます。ジェネリク...
Java

【Java】JavaのCollectionsユーティリティクラスの活用方法

こんにちは、かつコーチです。「Listをソートしたいけど、毎回forループでアルゴリズムを書くのは面倒」と感じたことはありませんか。今回は、そんな定番処理をまとめて解決してくれるCollectionsユーティリティクラスの使い方を紹介します...
Java

【Java】JavaのDeque・Stack・Queueの使い方を比較しながら解説

こんにちは、かつコーチです。「スタックとキューって結局何が違うの?」「Stackクラスは使わない方がいいって聞いたけど本当?」という質問をよくもらいます。今回はJava 21時点でのDeque・Stack・Queueの使い分けを、実際に手を...
Java

【Java】JavaのIteratorの仕組みと拡張for文との関係を解説

こんにちは、かつコーチです。「拡張for文でListを回しながら要素を削除したらエラーになった」という経験はありませんか。今回は拡張for文の裏側で動いているIteratorの仕組みを理解し、この定番のエラーを解決していきます。Iterat...
Java

【Java】JavaのComparator・Comparableの違いと使い方で並び替えをカスタマイズする

こんにちは、かつコーチです。自作クラスのListを並び替えたいとき、sortメソッドを呼んでも「どの基準で並べるか」が分からずエラーになった経験はありませんか。今回はJavaで並び替えの基準を決めるComparableとComparator...
Java

【Java】JavaのMapとは?HashMap・TreeMap・LinkedHashMapの違いを解説

こんにちは、かつコーチです。今回は「キーと値のペアでデータを管理する」Mapについて解説します。実装クラスが3種類あって混乱しやすいポイントなので、それぞれの特徴とつまずきやすい落とし穴を、実際のコード付きで整理していきましょう。Mapとは...
Java

【Java】JavaのSet入門:HashSetとTreeSetの違いを初心者向けに解説

こんにちは、かつコーチです。前回はListを解説しましたが、今回は「重複を許さないデータの集まり」を扱うSetについて説明します。「Listと何が違うの?」「HashSetとTreeSetはどう使い分ける?」という疑問を、実際のコードとつま...
Java

【Java】JavaのList入門:ArrayListとLinkedListの違いを初心者向けに解説

こんにちは、かつコーチです。今回は、Javaでデータをまとめて扱うときによく使うList(複数の値を順番に並べて管理する仕組み)について解説します。「配列と何が違うの?」「ArrayListとLinkedListってどっちを使えばいいの?」...