カテゴリ: Java 更新日: 2026/06/09

JavaのTreeMapクラスの使い方を完全ガイド!初心者でもわかるソート付きマップ

TreeMapクラス
TreeMapクラス

先生と生徒の会話形式で理解しよう

生徒

「先生、Javaでキーと値を組み合わせてデータを管理するクラスってありますか?」

先生

「JavaにはMapインターフェースを実装したクラスがいくつもあり、その中の一つがTreeMapです。」

生徒

「HashMapとどう違うんですか?」

先生

「TreeMapはキーを自動的に並び替えて保持してくれるのが特徴です。それでは詳しく見ていきましょう。」

1. TreeMapクラスとは?

「1. TreeMapクラスとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. TreeMapクラスとは?
1. TreeMapクラスとは?

JavaのTreeMapクラスは、java.utilパッケージに含まれているマップ系コレクションの一つです。HashMapと同じくキーと値のペアを格納しますが、大きな違いはキーが自動的に昇順にソートされて保持される点です。そのため、データを整理して保持したい場合に便利です。

例えば、会員番号や商品コードなど、キーを順番通りに並べて処理したいときに役立ちます。内部的には赤黒木というデータ構造を使って実現されており、検索や挿入も効率的に行うことができます。

2. TreeMapの基本的な使い方

2. TreeMapの基本的な使い方
2. TreeMapの基本的な使い方

TreeMapを使うには、キーと値の型を指定して宣言します。以下は文字列をキー、整数を値として扱う例です。


import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        TreeMap<String, Integer> scores = new TreeMap<>();
        scores.put("Tanaka", 80);
        scores.put("Suzuki", 90);
        scores.put("Yamada", 75);

        System.out.println(scores);
    }
}

{Suzuki=90, Tanaka=80, Yamada=75}

このように追加した順番に関係なく、キーが昇順に並べ替えられて格納されます。

3. TreeMapとHashMapの違い

3. TreeMapとHashMapの違い
3. TreeMapとHashMapの違い

初心者が混乱しやすいのが、TreeMapとHashMapの違いです。HashMapはキーの順序を保証しませんが、TreeMapは常にキーを昇順に整列させて保持します。そのため、データを順序付きで扱いたい場合はTreeMapが適しています。

ただし、TreeMapは内部でソート処理を行うため、HashMapに比べて挿入や検索の速度が若干遅くなります。性能を重視するか、順序を重視するかによって使い分けるのがポイントです。

4. よく使うメソッド

「4. よく使うメソッド」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. よく使うメソッド
4. よく使うメソッド

TreeMapクラスでよく利用されるメソッドをいくつか紹介します。

  • put(K key, V value):キーと値を追加する
  • get(Object key):指定したキーの値を取得する
  • remove(Object key):キーに対応する要素を削除する
  • firstKey():最小のキーを取得する
  • lastKey():最大のキーを取得する
  • containsKey(Object key):キーが存在するか確認する

import java.util.TreeMap;

public class TreeMapMethods {
    public static void main(String[] args) {
        TreeMap<Integer, String> users = new TreeMap<>();
        users.put(3, "Taro");
        users.put(1, "Hanako");
        users.put(2, "Ken");

        System.out.println("最小のキー: " + users.firstKey());
        System.out.println("最大のキー: " + users.lastKey());
        System.out.println("2番のユーザー: " + users.get(2));
        users.remove(1);
        System.out.println("削除後: " + users);
    }
}

最小のキー: 1
最大のキー: 3
2番のユーザー: Ken
削除後: {2=Ken, 3=Taro}

5. Comparatorを使った並び替え

5. Comparatorを使った並び替え
5. Comparatorを使った並び替え

TreeMapではデフォルトでキーが昇順に並びますが、Comparatorを指定することで独自の並び順を定義できます。例えば降順に並べたい場合は以下のように記述します。


import java.util.TreeMap;
import java.util.Comparator;

public class TreeMapCustomSort {
    public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>(Comparator.reverseOrder());
        map.put("C", 3);
        map.put("A", 1);
        map.put("B", 2);

        System.out.println(map);
    }
}

{C=3, B=2, A=1}

このようにComparatorを使うことで、用途に応じた柔軟な順序管理が可能になります。

6. TreeMapの活用シーン

6. TreeMapの活用シーン
6. TreeMapの活用シーン

TreeMapは、データをキーの順序付きで扱いたい場合に特に有効です。例えば、スコアランキングを管理したり、商品をコード順に並べて表示したりする用途に適しています。また、範囲検索を行いたい場合にも便利で、subMapheadMaptailMapといったメソッドを利用すると、特定の範囲のデータだけを取り出すことができます。

システム開発では、単にデータを格納するだけでなく、順序や検索の効率を意識した設計が重要です。その意味でもTreeMapは基礎を学ぶのにぴったりのクラスです。

7. HashMapやLinkedHashMapとの比較

「7. HashMapやLinkedHashMapとの比較」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. HashMapやLinkedHashMapとの比較
7. HashMapやLinkedHashMapとの比較

Javaのマップ系クラスにはいくつかの選択肢があります。HashMapは高速だが順序を保証しない、LinkedHashMapは挿入順序を保持する、そしてTreeMapはキーの昇順にソートするという違いがあります。初心者のうちは「順序をどう扱いたいか」に注目してクラスを選ぶと理解しやすいです。

特に検索エンジンや業務システムの開発では、データの並び順を考慮する場面が多いため、TreeMapを適切に使いこなせるようになると設計力が向上します。

まとめ

まとめ
まとめ

ここまでJavaのTreeMapクラスについて、基本的な使い方から応用的な活用方法、さらにHashMapやLinkedHashMapとの違いまで幅広く学んできました。TreeMapはキーを自動的に昇順で保持するという特徴があり、データを並び替えながら管理したい場合に非常に役立ちます。特に会員番号、商品コード、昇順で扱う辞書データ、日付順の履歴管理など、順序を意識したプログラムを書くときに力を発揮します。

プログラミング初心者は、まず「順序を保つ必要があるデータならTreeMapを使う」という考え方を習得すると、実務でのクラス選定がスムーズになります。また、Comparatorを利用すれば標準の昇順以外にも降順や独自ルールでキーを並び替えることができます。これにより、単なるマップ構造を超えて、柔軟な検索・並び替えロジックを実装できます。

さらに、TreeMapは内部で赤黒木(Red-Black Tree)というデータ構造を使っているため、検索・追加・削除の処理がバランスよく行われます。これはデータ量が増えるアプリケーションや、リアルタイムでデータが更新されるシステムでも安定した性能を発揮する要因です。同時に、HashMapより処理が重い場面もあるため、速度が重要な箇所では使い分けが必要です。

▼ まとめ用サンプルコード:日付順に並べるTreeMap

以下は日付(文字列)をキーとして、イベント名を値に保存し、昇順で管理する例です。日付順に扱えるため、スケジュール管理やタイムライン形式のデータに活用できます。


import java.util.TreeMap;

public class ScheduleExample {
    public static void main(String[] args) {
        TreeMap<String, String> schedule = new TreeMap<>();

        schedule.put("2025-03-01", "新機能リリース");
        schedule.put("2025-02-15", "テスト開始");
        schedule.put("2025-04-10", "最終レビュー");

        System.out.println(schedule);
    }
}

出力結果は次のようになり、キーが昇順(古い日付 → 新しい日付)で並び替えられています。


{2025-02-15=テスト開始, 2025-03-01=新機能リリース, 2025-04-10=最終レビュー}

このようにTreeMapは単なるコレクションという枠を超え、データの整理や表示順を制御する上で非常に便利な機能を提供します。Javaの中でも実務で頻繁に使われるため、学習の段階で理解しておくと大きな強みになります。

先生と生徒の振り返り会話

生徒

「TreeMapって、ただのマップじゃなくて並び替えまで自動でやってくれるんですね!」

先生

「その通りです。順番が必要なデータを扱うときに特に便利ですよ。」

生徒

「HashMapより遅いって言ってましたけど、どう使い分ければいいですか?」

先生

「順序が不要なら高速なHashMap、順序が必要ならTreeMap、挿入順を保ちたいならLinkedHashMapという感じで目的に合わせると良いですよ。」

生徒

「Comparatorを使うと降順や独自ルールでソートできるのも便利ですね!」

先生

「ええ、そこまで使いこなせると実務で活用できるレベルと言えるでしょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのTreeMapクラスとは何ですか?

TreeMapはJavaのコレクションフレームワークに含まれるクラスで、キーと値のペアを昇順に自動でソートして保持するMap実装です。

TreeMapとHashMapの違いを初心者にもわかりやすく教えてください。

HashMapは順序を保証しませんが、TreeMapはキーを昇順に自動で並び替えます。順序が必要な場合はTreeMapを使うのが適しています。

JavaでTreeMapを使うメリットは何ですか?

TreeMapを使うとデータが自動的にソートされ、検索や範囲抽出が簡単に行えるというメリットがあります。
カテゴリの一覧へ
新着記事
New1
Java
JavaのNotSerializableExceptionを完全解説!初心者でも理解できるシリアライズと例外処理
新規投稿
New2
Spring
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
更新記事
New3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
更新記事
New4
Java
Javaのjava.mathとBigIntegerのintValueメソッドを完全解説!初心者でもわかる数値変換の基本
更新記事
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.2
Java&Spring記事人気No2
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.3
Java&Spring記事人気No3
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.6
Java&Spring記事人気No6
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.7
Java&Spring記事人気No7
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.8
Java&Spring記事人気No8
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方