对键值对进行排序 C#+Java不同写法
C#有现成的sortMapByKey方法,调用一下就行:
// 引用命名空间 using System.Collections; Dictionary<string, string> param = new Dictionary<string, string>(); param.Add("bbb", "bbb"); param.Add("aaa", "aaa"); // 序列化 Dictionary<string, string> pa2 = sortMapByKey(param);
Java方法:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
/** * 使用 Map按key进行排序 * * @param map * @return */ private static Map<String, Object> sortMapByKey(Map<String, Object> map) { if (map == null || map.isEmpty()) { return null; } Map<String, Object> sortMap = new TreeMap<String, Object>(new Comparator<String>() { @Override public int compare(String str1, String str2) { return str1.compareTo(str2); } }); sortMap.putAll(map); return sortMap; }
Java调用:
Map<String, Object> param = new HashMap<String, Object>(); param.put("bbb", "xxxx"); param.put("cccc", "www"); Map<String, Object> params = sortMapByKey(param); // 按Key进行排序 StringBuilder builder = new StringBuilder();// 拼接成参数 for (Entry<String, Object> entry : params.entrySet()) { builder.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } String str = builder.substring(0, builder.length() - 1);//去掉最后一个&