Author
sorting hashmap based on values
santhoshkumar samala
Ranch Hand
Joined: Nov 12, 2003
Posts: 156
I need to sort hashmap based on values and not keys.. one more concern here is the values are duplicate.. the hash map has data like HashMap hashMap=new HashMap (); hashMap.put("aaa",new Integer("333")); hashMap.put("bbb",new Integer("111")); hashMap.put("ccc",new Integer("444")); hashMap.put("eee",new Integer("222")); hashMap.put("ggg",new Integer("333")); after sorting the map shuld have the data like hashMap.put("bbb",new Integer("111")); hashMap.put("eee",new Integer("222")); hashMap.put("aaa",new Integer("333")); hashMap.put("ggg",new Integer("333")); hashMap.put("ccc",new Integer("444")); can you please help me in solving this...
santhosh<br />SCJP,SCWCD
wise owen
Ranch Hand
Joined: Feb 02, 2006
Posts: 2023
posted May 13, 2006 09:58:00
0
come from www.theserverside.com/discussions/thread.tss?thread_id=29569. But the link break I used cached page from google. You can google search to find it.
Map someMap= new
HashMap ();
someMap.put("key1","c");
someMap.put("key2","a");
someMap.put("key3","b");
List mapKeys = new
ArrayList (someMap.keySet());
List mapValues = new
ArrayList (someMap.values());
someMap.clear();
TreeSet sortedSet = new
TreeSet (mapValues);
Object[] sortedArray = sortedSet.toArray();
int size = sortedArray.length;
// a) Ascending sort
for (int i=0; i<size; i++)
{
// System.out.println(sortedArray[i]);
someMap.put(mapKeys.get(mapValues.indexOf(sortedArray[i])), sortedArray[i]);
}
System.out.println(someMap);
someMap.clear();
// b) Descending sort
for (int i=size; i>0
{
someMap.put(mapKeys.get(mapValues.indexOf(sortedArray[--i])), sortedArray[i]);
}
System.out.println(someMap);
Edwin Dalorzo
Ranch Hand
Joined: Dec 31, 2004
Posts: 961
You could also use a SortedSet <Entry.Map<String ,Integer>> instad of a Map . Then create a Comparator<Map.Entry<String,Integer>> and use it in the TreeMap to get your items ordered according to the value and not the key.
subject: sorting hashmap based on values