TreeMapとは?
TreeMapは、Javaのコレクションフレームワークで提供されるMapインターフェースを実装したクラスの一つです。キーを昇順に自動的にソートし、その順序を保持する特徴を持っています。そのため、キーに基づいてデータを検索したり、ソートされた順序でデータを処理したい場合に非常に便利です。
TreeMapの主な特徴
- キーによる自動ソート: キーを自然な順序または指定したComparatorでソートします。
- 重複キーは許可されない: 同じキーを複数回挿入しようとすると、最後の値で上書きされます。
- nullキーは許可されない: キーにはnullを指定できません。
- Red-Black Treeと呼ばれるデータ構造に基づいて実装されており、検索、挿入、削除の平均的な計算時間がO(log n)と効率的です。
TreeMapの使いかた
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// TreeMapの作成 (キーはString型、値はInteger型)
Map<String, Integer> treeMap = new TreeMap<>();
// データの追加
treeMap.put("apple", 100);
treeMap.put("banana", 200);
treeMap.put("orange", 150);
// キーでソートされた順に表示
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
この例では、フルーツの名前をキー、価格を値としてTreeMapに格納し、キーのアルファベット順でソートして表示しています。
TreeMapの活用例
- 単語の出現頻度: 単語をキー、出現回数を値として格納し、単語の出現頻度をソートして表示する。
- 成績管理: 学生名をキー、成績を値として格納し、成績順に学生を表示する。
- 辞書: 単語をキー、意味を値として格納し、アルファベット順で単語を検索する。
TreeMapとHashMapの違い
特徴 | HashMap | TreeMap |
---|---|---|
キーの順序 | 無秩序 | キーの昇順にソート |
性能 | 一般的に高速 | キーによる検索は高速だが、挿入や削除はHashMapよりやや遅い |
使用用途 | 順序を気にせず、高速なアクセスが必要な場合 | キーによるソートが必要な場合、自然な順序でデータを保持したい場合 |
まとめ
TreeMapは、キーでソートされたデータを管理したい場合に非常に便利なクラスです。特に、キーに基づいた検索やソートを頻繁に行うようなアプリケーションで有効です。
TreeMapを効果的に活用することで、より効率的で読みやすいコードを作成することができます。
コメント