public static void main(String[] args) {
HashMap<String,String> map = new HashMap<String,String>();
map.put("19","款");
map.put("12","款");
map.put("11","45");
map.put("99","45");
map = (HashMap<String, String>) sortMapBykeyDesc(map) ;//key降序
System.out.println("map按照key倒序排序开始=========");
for(Map.Entry<String, String> maps : map.entrySet()){
System.out.println(maps.getKey() +"=" +maps.getValue());
}
map = (HashMap<String, String>) sortMapBykeyAsc(map) ;//key升序
System.out.println("map按照key升序排序开始=========");
for(Map.Entry<String, String> maps : map.entrySet()){
System.out.println(maps.getKey() +"=" +maps.getValue());
}
}
//倒叙
public static Map<String, String> sortMapBykeyDesc(Map<String, String> oriMap) {
Map<String, String> sortedMap = new LinkedHashMap<String, String>();
try {
if (oriMap != null && !oriMap.isEmpty()) {
List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet());
Collections.sort(entryList,
new Comparator<Map.Entry<String, String>>() {
public int compare(Entry<String, String> entry1,
Entry<String, String> entry2) {
int value1 = 0, value2 = 0;
try {
value1 = Integer.parseInt(entry1.getKey());
value2 = Integer.parseInt(entry2.getKey());
} catch (NumberFormatException e) {
value1 = 0;
value2 = 0;
}
return value2 - value1;
}
});
Iterator<Map.Entry<String, String>> iter = entryList.iterator();
Map.Entry<String, String> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
}
} catch (Exception e) {
}
return sortedMap;
}
//升序
public static Map<String, String> sortMapBykeyAsc(Map<String, String> oriMap) {
Map<String, String> sortedMap = new LinkedHashMap<String, String>();
try {
if (oriMap != null && !oriMap.isEmpty()) {
List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet());
Collections.sort(entryList,
new Comparator<Map.Entry<String, String>>() {
public int compare(Entry<String, String> entry2,
Entry<String, String> entry1) {
int value2 = 0, value1 = 0;
try {
value2 = Integer.parseInt(entry1.getKey());
value1 = Integer.parseInt(entry2.getKey());
} catch (NumberFormatException e) {
value2 = 0;
value1 = 0;
}
return value1 - value2;
}
});
Iterator<Map.Entry<String, String>> iter = entryList.iterator();
Map.Entry<String, String> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
}
} catch (Exception e) {
}
return sortedMap;
}
}
输出结果:
map按照key倒序排序开始=========
99=45
19=款
12=款
11=45
map按照key升序排序开始=========
11=45
12=款
19=款
99=45
这个排序只对整数的数值起作用,因为:Collections.sort只支持String,String的类型 ,这就遗憾了