導入Java . util . ArrayList;
導入Java . util . collections;
導入Java . util . comparator;
導入Java . util . list;
導入Java . util . map;
導入Java . util . map . entry;
導入Java . util . treemap;
公共類排序映射{
公共靜態void main(String[] args) {
map map = new TreeMap();
Map.put(《書》,4);
Map.put("視聽",6);
Map.put ("material ",9);
Map.put(《音樂》,8);
Map.put(《影視》,7);
Map.put("動畫",4);
Map.put(《宋》卷三);
Map.put("圖片",2);
Map.put ("icon ",6);
ArrayList & lt地圖。Entry & ltString,Integer & gt& gtentries= sortMap(映射);
for(int I = 0;我& lt5;i++){
系統。out.print(entries.get(i))。getKey()+":" +entries.get(i)。getValue());
}
}
公共靜態數組列表& lt地圖。Entry & ltString,Integer & gt& gtsortMap(Map map){
列表& lt地圖。Entry & ltString,Integer & gt& gtentries = new ArrayList & lt地圖。Entry & ltString,Integer & gt& gt(map . entry set());
Collections.sort(條目,新比較器& lt地圖。Entry & ltString,Integer & gt& gt() {
公共int比較(Map。Entry & ltString,Integer & gtobj1,地圖。Entry & ltString,Integer & gtobj2) {
返回obj 2 . getvalue()-obj 1 . getvalue();
}
});
return(ArrayList & lt;Entry & ltString,Integer & gt& gt)詞條;
}
}12345678910111213141516171819202122232425262728293031323334353637
此時按降序排序。如果要升序排序,Comparator的返回就改成obj 1 . getvalue()-obj 2 . getvalue();就這麽幹吧
總結:因為TreeMap默認主要是對鍵進行排序,所以有時候我們需要對值進行排序。這時候主要的策略就是把map改成List,然後用Collections.sort來排序,重寫比較器方法。