前言:Map和Map.Entry的解说
Map是java中的接口,Map.Entry是Map的一个内部接口。
Map提供了一些常用方法,如keySet()、entrySet()等方法。
keySet()方法返回值是Map中key值的集合;
entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
直接代码看结果吧
public static Map<String,String> order(Map<String,String> map){
HashMap<String,String> tempMap = new LinkedHashMap();
List<Map.Entry<String,String>> infoIds = new ArrayList(map.entrySet());
Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
return (o1.getKey().toString().compareTo(o2.getKey()));
}
});
for(int i=0 ; i < infoIds.size(); i++){
Map.Entry<String,String> item = infoIds.get(i);
tempMap.put(item.getKey(),item.getValue());
}
return tempMap;
}
public static String mapJoin(Map<String,String> map){
StringBuilder stringBuilder = new StringBuilder();
for (String key:map.keySet()){
if(map.get(key)!=null && !"".equals(map.get(key))){
stringBuilder.append(key).append("=").append(map.get(key)).append("&");
}
}
if(stringBuilder.length()>0){
stringBuilder.deleteCharAt(stringBuilder.length()-1);
}
return stringBuilder.toString();
}
public static void main(String[] args){
Map<String,String> parameters = new HashMap<String,String>();
parameters.put("cc","我是c");
parameters.put("dd","我是d");
parameters.put("aa","我是a");
parameters.put("bb","我是b");
Map<String, String> order = order(parameters);
String s = mapJoin(order);
System.out.println("---排序结果为--"+s);
}