按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和接口的自定义参数,但不包括公共请求参数中的Signature参数)进行排序
参数进行字典顺序排序;
调用阿里云
/** * @param paraMap 请求参数 * @param urlEncode 是否utf-8编码 * @return */ public static String formatUrlMap(Map<String, String> paraMap, boolean urlEncode) { String buff = ""; Map<String, String> tmpMap = paraMap; try { List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(tmpMap.entrySet()); // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) 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()); } }); // 构造返回字符串键值对的格式 StringBuilder buf = new StringBuilder(); for (Map.Entry<String, String> item : infoIds) { if (StringUtils.isNotBlank(item.getKey())) { String key = item.getKey(); String val = item.getValue(); if (urlEncode) { val = URLEncoder.encode(val, "utf-8"); } buf.append(key + "=" + val); buf.append("&"); } } buff = buf.toString(); if (buff.isEmpty() == false) { buff = buff.substring(0, buff.length() - 1); } } catch (Exception e) { return null; } return buff; }
public static void main(String[] args) { // 原始Map Map<String, Integer> map = new HashMap<>(); map.put("apple", 3); map.put("banana", 1); map.put("orange", 2); // 1. 按键排序 Map<String, Integer> sortedByKey = new TreeMap<>(map); System.out.println("按键排序: " + sortedByKey); // 2. 按值排序 List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, (o1, o2) -> o1.getValue().compareTo(o2.getValue())); Map<String, Integer> sortedByValue = new LinkedHashMap<>(); for (Map.Entry<String, Integer> entry : list) { sortedByValue.put(entry.getKey(), entry.getValue()); } System.out.println("按值排序: " + sortedByValue); }

浙公网安备 33010602011771号