按值订购地图界面

时间:2019-04-04 19:44:53

标签: java

这是我拥有的代码:

from wand.image import Image
with Image(blob=img, format='GIF') as picture:
    picture.depth = 8
    print picture[1, 1].string
    #=> srgb(274,274,274)

但是我无法对数据进行排序,我需要按值(名称)对哈希表进行排序。

输入:Map<Integer,String> map = new HashMap<>(); map.put(23,"Nitin"); map.put(45,"Kapil"); map.put(20, "Sam"); map.put(18,"Adam"); for(Map.Entry m:map.entrySet()){ System.out.println(m.getValue()+":"+m.getValue()); }

Map<Age,Name>

输出:

23, Nitin
45, Kapil
20, Sam
18, Adam

1 个答案:

答案 0 :(得分:0)

您可以只使用Java Streams来执行此操作,并按照我的值对地图进行排序:

Map<Integer, String> sorted = map.entrySet().stream()
        .sorted(Map.Entry.comparingByValue())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (s1, s2) -> s1, LinkedHashMap::new));

sorted.forEach((i, s) -> System.out.println(i + ": " + s));

LinkedHashMap将保留将键添加到地图中的顺序。

结果将是这样:

18: Adam
45: Kapil
23: Nitin
20: Sam

如果要反转值的顺序,可以使用Comparator.reversed()

Map<Integer, String> sorted = map.entrySet().stream()
        .sorted(Map.Entry.<Integer, String>comparingByValue().reversed())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (s1, s2) -> s1, LinkedHashMap::new));