public static Map<String, Integer> sortMapByValue(Map<String, Integer> oriMap) { if (oriMap == null || oriMap.isEmpty()) { return null; } Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>(); List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>( oriMap.entrySet()); Collections.sort(entryList, new MapValueComparator()); Iterator<Map.Entry<String, Integer>> iter = entryList.iterator(); Map.Entry<String, Integer> tmpEntry = null; while (iter.hasNext()) { tmpEntry = iter.next(); sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue()); } return sortedMap; }
class MapValueComparator implements Comparator<Map.Entry<String, Integer>> { @Override public int compare(Entry<String, Integer> me1, Entry<String, Integer> me2) { return me2.getValue().compareTo(me1.getValue()); } }