【问题标题】:Order HashMap<String,Integer> according Integer [duplicate]根据 Integer 排序 HashMap<String,Integer> [重复]
【发布时间】:2011-07-10 07:07:24
【问题描述】:

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

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

现在,我想根据受欢迎程度订购这个哈希图。

在java中怎么做?

【问题讨论】:

    标签: java hashmap


    【解决方案1】:

    我假设您将歌手存储为键,并将(歌手的)流行度存储为值。 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】:

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

      【讨论】:

      • TreeMap 不会帮助您按值对地图进行排序。
      【解决方案3】:

      您无法控制 HashMap 元素的顺序。创建一个新的TreeMap&lt;Integer,List&lt;String&gt;&gt; 并将您的数据复制到其中。使用List&lt;String&gt; 涵盖您有重复 int 值的情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-19
        • 2012-05-26
        • 2016-06-11
        • 2018-08-08
        相关资源
        最近更新 更多