Как отсортировать map по значению java

Аватар пользователя Сергей Якимович
Сергей Якимович
01 декабря 2022

Отсортировать мап по значению можно преобразовав ее в LinkedHashMap или TreeMap :

import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class App {
        public static void main(String[] args) {
            Map<String, Integer> myMap = Map.of("Ivan", 2000, "Petr", 1990, "Egor", 1995);

            Map<String, Integer> sortedMap1 = myMap.entrySet().stream()
                    .sorted(Map.Entry.comparingByValue())
                    .collect(Collectors.toMap(
                            Map.Entry::getKey,
                            Map.Entry::getValue,
                            (a, b) -> a,
                            LinkedHashMap::new
                    ));
            System.out.println(sortedMap1); // => {Petr=1990, Egor=1995, Ivan=2000}

            Map<String, Integer> sortedMap2 = new TreeMap<String, Integer>(
                    Comparator.comparing(myMap::get));
            sortedMap2.putAll(myMap);

            System.out.println(sortedMap2); // => {Petr=1990, Egor=1995, Ivan=2000}
        }
}
1 0

Похожие вопросы