A full Java example to demonstrate how to sort a Map (HashMap) based on its values. The overall idea is, convert the Map into List, sort the List and put the sorted list back to a Map.

Map ---> List ---> Sort ---> Map

Map sorting example

 
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
 
public class SortMapExample{
 
   public static void main(String[] args) {
 
	System.out.println("Unsort Map......");
	Map<String,String> unsortMap = new HashMap<String,String>();
	unsortMap.put("1", "1");
	unsortMap.put("2", "A");
	unsortMap.put("3", "2");
	unsortMap.put("4", "B");
	unsortMap.put("5", "C");
	unsortMap.put("6", "c");
	unsortMap.put("7", "b");
	unsortMap.put("8", "a");
 
	Iterator iterator=unsortMap.entrySet().iterator();
 
        for (Map.Entry entry : unsortMap.entrySet()) {
        	System.out.println("Key : " + entry.getKey() 
       			+ " Value : " + entry.getValue());
        }
 
        System.out.println("Sorted Map......");
        Map<String,String> sortedMap =  sortByComparator(unsortMap);
 
        for (Map.Entry entry : sortedMap.entrySet()) {
        	System.out.println("Key : " + entry.getKey() 
       			+ " Value : " + entry.getValue());
        }
   }
 
   private static Map sortByComparator(Map unsortMap) {
 
        List list = new LinkedList(unsortMap.entrySet());
 
        //sort list based on comparator
        Collections.sort(list, new Comparator() {
             public int compare(Object o1, Object o2) {
	           return ((Comparable) ((Map.Entry) (o1)).getValue())
	           .compareTo(((Map.Entry) (o2)).getValue());
             }
	});
 
        //put sorted list into map again
	Map sortedMap = new LinkedHashMap();
	for (Iterator it = list.iterator(); it.hasNext();) {
	     Map.Entry entry = (Map.Entry)it.next();
	     sortedMap.put(entry.getKey(), entry.getValue());
	}
	return sortedMap;
   }	
}

Result

Unsort Map......
Key : 3 Value : 2
Key : 2 Value : A
Key : 1 Value : 1
Key : 7 Value : b
Key : 6 Value : c
Key : 5 Value : C
Key : 4 Value : B
Key : 8 Value : a
Sorted Map......
Key : 1 Value : 1
Key : 3 Value : 2
Key : 2 Value : A
Key : 4 Value : B
Key : 5 Value : C
Key : 8 Value : a
Key : 7 Value : b
Key : 6 Value : c