java HashMap sorting <String,Integer> . How to sort it?

19,049

Solution 1

A HashMap is an unordered collection. It has no sort order. Even a TreeMap will sort by key, not value.

If you want to prepare a sorted list by the sort order of the values, you'll have to create an appropriate object, such as an ArrayList<Map.Entry<String,Integer>>, iterate over your HashMap and insert all the entries, and then call Collections.sort with a collation function.

Solution 2

If you want sorted map, HashMap isn't the best approach.

I'd suggest taking a look at TreeMap as it is sorted. You can set the comparator to compare the values instead of the keys, as they do in this answer:

https://stackoverflow.com/a/1283722/975959

Solution 3

ArrayList<Integer> sortedHashMap=new ArrayList<Integer>();

for("your Object" m : degree.values())
{
      sortedHashMap.add(m);
}

collections.sort(sortedHashMap);

so ,you can print your hashMap as sorted hashMap!

Share:
19,049
Hardik
Author by

Hardik

Updated on June 06, 2022

Comments

  • Hardik
    Hardik almost 2 years

    Possible Duplicate:
    How to sort a Map<Key, Value> on the values in Java?

    In my project, I have taken a HashMap like this

    HashMap degree = new HashMap();

    Suppose I have:

    degree.put("a",5);
    degree.put("b",2);
    degree.put("c",4);
    degree.put("d",2);
    degree.put("e",3);
    degree.put("f",5);
    

    Now I have to Sort this list according to given Integer values

    Sorted HashMap Should be :

    {a=5, f=5, c=4, e=4, b=4, d=2}

    How I can do this ?