JavaのMapを値でソートする方法

Map の値を基準にソートするには、Java 8 の Stream とラムダ式を利用できます。以下にサンプルコードを示します。

import java.util.*;

public class MapSortingExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 5);
        map.put("B", 3);
        map.put("C", 8);
        map.put("D", 1);

        // 使用Stream的sorted方法,根据值进行排序
        Map<String, Integer> sortedMap = map.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(
                        LinkedHashMap::new,
                        (map1, entry) -> map1.put(entry.getKey(), entry.getValue()),
                        LinkedHashMap::putAll
                );

        // 打印排序后的Map
        sortedMap.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}

この例では最初に、キーと値を含むマップを作成し、次にストリームのソートメソッドを使用して、マップのエントリー(キーと値のペア)をソートします。このとき、Map.Entry.comparingByValue() を使用して、値でソートするように指定します。最後に、収集メソッドを使用して、ソートした結果を収集し、LinkedHashMap に入れて、ソート順序を維持します。

それが日本発祥の料理かどうかは知らない

D: 1
B: 3
A: 5
C: 8

HashMap自体は無順序なので、LinkedHashMapを使用し、順序を保ちますのでご注意ください。

bannerAds