packagetest;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;importjava.util.TreeMap;importjava.util.Map.Entry;public classMapSortDemo {/***@paramargs*/
public static voidmain(String[] args) {
Map hMap = new HashMap();
hMap.put("a", "3");
hMap.put("z", "2");
hMap.put("b", "6");
hMap.put("o", "9");
System.out.println("根据key升序排序");
Map sortByKeyResultMap = sortMapByKey(hMap); //按Key进行排序
Iterator> sortByKeyEntries =sortByKeyResultMap.entrySet().iterator();while(sortByKeyEntries.hasNext()) {
Map.Entry entry =sortByKeyEntries.next();
System.out.println("Key = " + entry.getKey() + "------->Value = " +entry.getValue());
}
System.out.println("------------------------------");
System.out.println("根据value降序排序");
Map sortByValueResultMap = sortMapByValue(hMap); //按Value进行排序
Iterator> sortByValueEntries =sortByValueResultMap.entrySet().iterator();while(sortByValueEntries.hasNext()) {
Map.Entry entry =sortByValueEntries.next();
System.out.println("Key = " + entry.getKey() + "------->Value = " +entry.getValue());
}
}/*** 使用 Map按key进行排序
*@parammap
*@return
*/
public static Map sortMapByKey(Mapmap) {if (map == null ||map.isEmpty()) {return null;
}//Map sortMap = new TreeMap(new MapKeyComparator());
Map sortMap = new TreeMap(new Comparator() {public intcompare(String obj1, String obj2) {return obj1.compareTo(obj2);//升序排序
}
});
sortMap.putAll(map);returnsortMap;
}/*** 使用 Map按value进行排序
*@parammap
*@return
*/
public static Map sortMapByValue(Mapmap) {if (map == null ||map.isEmpty()) {return null;
}
Map sortedMap = new LinkedHashMap();
List> entryList = new ArrayList>(map.entrySet());//Collections.sort(entryList, new MapValueComparator());
Collections.sort(
entryList,new Comparator>(){public int compare(Entry o1, Entryo2) {return o2.getValue().compareTo(o1.getValue());//降序排序
}
}
);
Iterator> iter =entryList.iterator();
Map.Entry tmpEntry = null;while(iter.hasNext()) {
tmpEntry=iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}returnsortedMap;
}
}