Javaでハッシュマップを値でソートする方法


  1. ハッシュマップを値のリストに変換し、リストをソートする方法:
import java.util.*;
public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 5);
        hashMap.put("B", 2);
        hashMap.put("C", 8);
        List<Map.Entry<String, Integer>> list = new ArrayList<>(hashMap.entrySet());
        list.sort(Map.Entry.comparingByValue());
        for (Map.Entry<String, Integer> entry : list) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}
  1. ハッシュマップを値でソートするためのカスタムコンパレータを使用する方法:
import java.util.*;
public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 5);
        hashMap.put("B", 2);
        hashMap.put("C", 8);
        List<Map.Entry<String, Integer>> list = new ArrayList<>(hashMap.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });
        for (Map.Entry<String, Integer> entry : list) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}
  1. Java 8以降を使用してハッシュマップを値でソートする方法:
import java.util.*;
public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 5);
        hashMap.put("B", 2);
        hashMap.put("C", 8);
        List<Map.Entry<String, Integer>> list = new ArrayList<>(hashMap.entrySet());
        list.sort(Map.Entry.comparingByValue());
        list.forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }
}

これらの方法を使用すると、ハッシュマップの値でソートされたエントリを取得できます。ご希望の方法を選択し、コードをカスタマイズして使用してください。