升序排列

时间:2018-06-21 14:04:53

标签: java

所以我有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比较吗?

2 个答案:

答案 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());
    }
});