Java の TreeMap データ構造

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Java の TreeMap クラスは、Java コレクション インターフェイスの一部で、Map インターフェイスを実装しています。他の Map 実装とは異なり、キーと値のペアをソートされた順序で格納します。この実験では、Java プログラムで TreeMap クラスを効果的に使用する方法を学びます。

TreeMap の作成

  • テキスト エディタを開き、~/project ディレクトリに TreeMapDemo.java という名前の新しいファイルを作成します。
  • 必要なパッケージをインポートします。
import java.util.Map;
import java.util.TreeMap;
  • TreeMap オブジェクトを作成します。
Map<Integer, String> map = new TreeMap<>();

TreeMap に要素を追加する

  • put() メソッドを使用して、TreeMap に要素を追加します。
map.put(1, "John");
map.put(2, "Mary");
map.put(3, "Peter");

これらのコードを main メソッドの中に追加します。

TreeMap を表示する

  • for-each ループを使用して、TreeMap を反復処理します。
for(Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

カスタムソートの使用

  • Employee という名前の新しいクラスを作成します。
class Employee implements Comparable<Employee> {
    private int id;
    private String name;

    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public int compareTo(Employee e) {
        return this.id - e.getId();
    }
}
  • いくつかの社員を TreeMap に追加します。
Map<Employee, String> employeeMap = new TreeMap<>();
employeeMap.put(new Employee(3, "John"), "IT");
employeeMap.put(new Employee(2, "Mary"), "HR");
employeeMap.put(new Employee(1, "Peter"), "Finance");
  • これで、TreeMap を反復処理するとき、社員 ID に基づいてソートされます。
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
    System.out.println(entry.getKey().getId() + " "
                       + entry.getKey().getName() + " "
                       + entry.getValue());
}

ソート用のコンパレータの使用

  • TreeMapDemo クラスでカスタム コンパレータを定義します。
class DescendingOrder implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
}
  • カスタム コンパレータを使用して新しい TreeMap オブジェクトを作成します。
Map<Integer, String> treeMap = new TreeMap<>(new DescendingOrder());
treeMap.put(1, "John");
treeMap.put(4, "Mary");
treeMap.put(2, "Peter");
  • これで、TreeMap を反復処理するとき、降順にソートされます。
for(Map.Entry<Integer, String> entry : treeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

マップ要素のアクセス

  • 特定の要素にアクセスするには、get() メソッドを使用します。
String name = map.get(1);
System.out.println("Name is " + name);

マップ要素の削除

  • 特定の要素を削除するには、remove() メソッドを使用します。
String removedName = map.remove(2);
System.out.println("Removed: " + removedName);

マップのサイズを取得する

  • size() メソッドを使用して、TreeMap 内の要素数を取得します。
int size = map.size();
System.out.println(size);

最初と最後の要素を取得する

  • firstKey() および lastKey() メソッドを使用して、TreeMap 内の最初と最後の要素を取得します。
int firstKey = map.firstKey();
int lastKey = map.lastKey();

要素の範囲を取得する

  • subMap() メソッドを使用して、要素の範囲を取得します。
Map<Integer, String> rangeMap = map.subMap(1, 3);
for(Map.Entry<Integer, String> entry : rangeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

プログラムをコンパイルして実行する

  • ターミナルを開き、~/project ディレクトリに移動します。
  • javac コマンドを使用して TreeMapDemo.java ファイルをコンパイルします。
javac TreeMapDemo.java
  • java コマンドを使用してプログラムを実行します。
java TreeMapDemo

まとめ

この実験では、Java の TreeMap クラスと、プログラムで効果的に使用する方法について学びました。TreeMap を作成する方法、要素の追加と削除、および特定の基準に基づいて要素を取得する方法を学びました。また、コンパレータを使用してソート順をカスタマイズする方法も学びました。TreeMap クラスは、キーと値のペアのソートと格納に対して多くの柔軟性と制御を提供します。