我有这个代码,但它按值按升序排序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;
}
例如我的哈希映射:
(&#34; word&#34;,0.7),(&#34; word2&#34;,1.0)
我希望得到如下命令:
(&#34; word2&#34;,1.0),(&#34; word,0.7&#34;)
答案 0 :(得分:0)
您可以通过反转compareTo
- 方法的结果来反转顺序。
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,反之亦然,导致颠倒顺序。