How to sort Map values by key in Java?

后端 未结 15 2363
野性不改
野性不改 2020-11-22 08:26

I have a Map that has strings for both keys and values.

Data is like following:

\"question1\", \"1\"
\"question9\", \"1\"
\"que

15条回答
  •  时光取名叫无心
    2020-11-22 09:06

    This code can sort a key-value map in both orders i.e. ascending and descending.

    > Map sortByValues
         (final Map map, int ascending)
    {
         Comparator valueComparator =  new Comparator() {         
            private int ascending;
            public int compare(K k1, K k2) {
                int compare = map.get(k2).compareTo(map.get(k1));
                if (compare == 0) return 1;
                else return ascending*compare;
            }
            public Comparator setParam(int ascending)
            {
                this.ascending = ascending;
                return this;
            }
        }.setParam(ascending);
    
        Map sortedByValues = new TreeMap(valueComparator);
        sortedByValues.putAll(map);
        return sortedByValues;
    }
    

    As an example:

    Map recommWarrVals = new HashMap();
    recommWarrVals = sortByValues(recommWarrVals, 1);  // Ascending order
    recommWarrVals = sortByValues(recommWarrVals,-1);  // Descending order
    

提交回复
热议问题