根据Integer </string,integer>命令HashMap <string,integer>

时间:2011-03-07 11:23:26

标签: java hashmap

  

可能重复:
  How to sort a Map<Key, Value> on the values in Java?

尊敬的, 我有一个哈希映射,其中我保存了值:歌手(字符串)和流行度(整数)。

现在,我希望根据受欢迎程度订购此哈希地图。

如何在java中做到这一点?

3 个答案:

答案 0 :(得分:2)

HashMaps可以(按设计)不订购。如果您需要有序地图,请使用TreeMap

答案 1 :(得分:2)

我假设你将歌手作为一个关键词,以及歌手的受欢迎程度作为价值。 HashMap没有排序,TreeMap按键排序,而不是按值排序,所以它没有帮助。

如果您需要按流行度排序的歌手,请在地图中创建一个包含所有歌手的列表,然后使用比较器对该列表进行排序,比较两位歌手的受欢迎程度:

List<String> singers = new ArrayList<String>(map.keySet());
Collections.sort(singers, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        Integer popularity1 = map.get(s1);
        Integer popularity2 = map.get(s2);
        return popularity1.compareTo(popularity2);
    }
});

答案 2 :(得分:1)

您无法控制HashMap元素的顺序。制作一个新的TreeMap<Integer,List<String>>并将数据复制到其中。使用List<String>来涵盖重复int值的情况。