【问题标题】:how to sort HashMap by value in descending order如何按值按降序对HashMap进行排序
【发布时间】:2016-05-02 15:44:43
【问题描述】:

我有这段代码,但它是按值按升序对 hashMap 进行排序,我想按降序对 HashMap 进行排序。

public  Map<String, Float> sortByValue(Map<String, Float> map) {
List list = new LinkedList(map.entrySet());
Collections.sort(list, new Comparator() {
     public int compare(Object o1, Object o2) {
          return ((Comparable) ((Map.Entry) (o1)).getValue())
         .compareTo(((Map.Entry) (o2)).getValue());
     }
});

   Map result = new LinkedHashMap();
   for (Iterator it = list.iterator(); it.hasNext();) {
       Map.Entry entry = (Map.Entry)it.next();
       result.put(entry.getKey(), entry.getValue());
   }

   return result;
} 

例如我的哈希图:

("word",0.7) , ("word2",1.0)

我想成为这样的订单:

("word2",1.0) , ("word,0.7")

【问题讨论】:

    标签: sorting hashmap


    【解决方案1】:

    您可以通过反转compareTo-Method 的结果来反转顺序。

     public int compare(Object o1, Object o2) {
          return ((Comparable) ((Map.Entry) (o1)).getValue())
         .compareTo(((Map.Entry) (o2)).getValue());
     }
    

    会变成

     public int compare(Object o1, Object o2) {
          return -((Comparable) ((Map.Entry) (o1)).getValue())
         .compareTo(((Map.Entry) (o2)).getValue());
     }
    

    这会将 1 变为 -1,反之亦然,从而导致倒序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多