如题
先编写一个类 重写一下String 字符比较
package demo;
import java.util.Comparator;
/**
* 比较器类
*/
public class MapKeyComparator implements Comparator<String> {
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2);
}
}
map排序的方法
public static Map<String, String> sortMapByKey(Map<String, String> map) {
if (map == null || map.isEmpty()) {
return null;
}
Map<String, String> sortMap = new TreeMap<String, String>(
new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
map按&符号拼接成字符串的方法
public static String createLinkString(Map<String, String> params, boolean encode) {
List<String> keys = new ArrayList<String>(params.keySet());
// Collections.sort(keys);//不按首字母排序, 需要按首字母排序请打开
StringBuilder prestrSB = new StringBuilder();
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = params.get(key);
if (encode) {
try {
value = URLEncoder.encode(value, "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符
prestrSB.append(key).append("=").append(value);
} else {
prestrSB.append(key).append("=").append(value).append("&");
}
}
return prestrSB.toString();
}
测试类方法
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String, String> reqMap =new HashMap<>();
reqMap.put("b", "ok");
reqMap.put("a", "2ok");
reqMap=sortMapByKey(reqMap);
boolean nice=false;
String ok= createLinkString(reqMap,nice);
System.out.println(ok);
}
控制台输出结果
第二种方法
public static String createLinkString(Map<String, String> params) {
List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(params.entrySet());
//然后通过比较器来实现排序
Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
//升序排序
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1.getKey().compareTo(o2.getKey());
}
});
Map<String, String> newMap =new HashMap<>();
StringBuffer namestr = new StringBuffer();
for(Map.Entry<String,String> mapping:list){
// System.out.println(mapping.getKey()+"="+mapping.getValue());
namestr.append(mapping.getKey()+"="+mapping.getValue()+"&");
}
String newStar= namestr.substring(0, namestr.length()-1);
return newStar.toString();
}