package com;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*
* @author muyunfei
*
* <p>Modification History:</p>
* <p>Date Author Description</p>
* <p>------------------------------------------------------------------</p>
* <p>Jun 7, 2017 牟云飞 新建</p>
*/
public class MapSortDebug {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("广州", "999");
map.put("深圳", "28");
map.put("珠海", "898");
map.put("佛山", "666");
map.put("海南", "889");
Map<String, Integer> result = getSortMap(map);
}
private static Map<String, Integer> getSortMap(Map<String, String> map){
// 这里将map.entrySet()转换成list
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(
map.entrySet());
// 根据字符串类型的数字排序,当然也可以Map.Entry<String, Double>
Collections.sort(list, new QuantityComparator());
//输出
Map<String, Integer> mapresult = new HashMap<String, Integer>();
if(list.size()>0){
for(int i=0;i<list.size();i++){
mapresult.put(list.get(i).getKey(), i+1);
System.out.println(list.get(i).getKey()+":"+list.get(i).getValue()+";");
}
}
return mapresult;
}
private static class QuantityComparator implements Comparator<Object> {
public int compare(Object object1, Object object2) {// 实现接口中的方法
Map.Entry<String, String> p1 = null;
Map.Entry<String, String> p2 = null;
p1 = (Map.Entry<String, String>) object1; // 强制转换
p2 = (Map.Entry<String, String>) object2;
return Double.valueOf(p1.getValue()).compareTo(Double.valueOf(p2.getValue()));
}
}
}