Javaで逆順にキーでMapをソートする方法


方法1: TreeMapを使用する方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        // マップに要素を追加するコード
        // TreeMapにマップのエントリーをコピーする
        TreeMap<String, Integer> sortedMap = new TreeMap<>(Collections.reverseOrder());
        sortedMap.putAll(map);
        // ソートされたマップのエントリーを表示する
        for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

方法2: コンパレータを使用する方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        // マップに要素を追加するコード
        // マップのエントリーをリストに変換する
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
        // エントリーリストをキーで逆順にソートする
        entryList.sort(Comparator.comparing(Map.Entry::getKey, Collections.reverseOrder()));
        // ソートされたエントリーリストのエントリーを表示する
        for (Map.Entry<String, Integer> entry : entryList) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

方法3: Java 8以降の場合、Streamを使用する方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        // マップに要素を追加するコード
        // キーで逆順にソートされたストリームを作成する
        map.entrySet().stream()
                .sorted(Map.Entry.comparingByKey(Collections.reverseOrder()))
                .forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }
}

これらの方法を使用すると、JavaでMapをキーの逆順でソートすることができます。適切な方法を選択し、コードを自分の要件に合わせてカスタマイズしてください。