カテゴリ: Java 更新日: 2025/12/20

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

TreeMapクラス
TreeMapクラス

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

生徒

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

先生

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

生徒

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

先生

「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. よく使うメソッド

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との比較

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

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

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

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

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

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

TreeMapはJavaのコレクションフレームワークに含まれるクラスで、キーと値のペアを昇順に自動でソートして保持するMap実装です。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本