如何嘗試這樣,
的方法基於排序地圖值DESC
public static Map<Character, Integer> mapSortedByValues(Map<Character, Integer> map) {
List<Map.Entry<Character, Integer>> entryList = new LinkedList<Map.Entry<Character, Integer>>(map.entrySet());
Collections.sort(entryList,
new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> e1, Map.Entry<Character, Integer> e2) {
return (e1.getValue()).compareTo(e2.getValue());
}
}
);
Collections.reverse(entryList); //Reverse value DESC
Map<Character, Integer> sortedMap = new LinkedHashMap<Character, Integer>();
for (Map.Entry<Character, Integer> entry : entryList)
sortedMap.put(entry.getKey(), entry.getValue());
return sortedMap;
}
測試值排序;
public static void main(String[] args) {
LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();
map.put('a', 7);
map.put('b', 9);
map.put('c', 6);
Map sortedMap = mapSortedByValues(map);
System.out.println(sortedMap);
}
將輸出
{c=9, a=7, b=6}
你能解釋一下你試過的嗎?有大量的重複http://stackoverflow.com/questions/12184378/sorting-linkedhashmap – sidgate
你可以在地圖中存儲原始數據類型,我相信你可以只存儲對象。你有包裝類來做到這一點。 – saikumarm
爲什麼'c 9 a 7 b 6'? – xehpuk