所以我有HashMap,我将其转换为Object,所以我可以按值对它进行排序,现在默认情况下,我将其按降序进行排序,但是我还需要其他选项来对它进行升序排序。
我使用了简单的数组排序:
HashMap<String, Integer> prefMap = getMyList();
Object[] a = prefMap.entrySet().toArray();
Arrays.sort(a, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Map.Entry<String, Integer>) o2).getValue()
.compareTo(((Map.Entry<String, Integer>) o1).getValue());0
}
});
上面的代码适用于降序,如果我想按升序对它们进行排序,我应该与if / else比较吗?
答案 0 :(得分:1)
要升序排列,您可以简单地调用Comparator
的{{3}}版本:
Arrays.sort(a, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2).getValue().compareTo((o1).getValue());
}
}.reversed()); // <-- see here
答案 1 :(得分:0)
在compareTo中交换o2和o1,您将其升序。...
HashMap<String, Integer> prefMap = getMyList();
Object[] a = prefMap.entrySet().toArray();
Arrays.sort(a, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Map.Entry<String, Integer>) o1).getValue()
.compareTo(((Map.Entry<String, Integer>) o2).getValue());
}
});