map升序排序
// 1.7key排序
ArrayList<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(paramMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
return o1.getKey().compareTo(o2.getKey());
}
});
Map<String,String> returnMap = new LinkedHashMap<String,String>();
for(Map.Entry<String, String> entry: list)
{
returnMap.put(entry.getKey(), entry.getValue());
}
//1.8根据key:java新增comparingByKey()
List<Map.Entry<String, Pet>> maps = (List<Entry<String, Pet>>) map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toList());
//1.8根据value:java新增comparingByValue()
List<Map.Entry<String, Pet>> maps = (List<Entry<String, Pet>>) map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());
//1.8根据key:java新增comparingByKey() 用的是Lamd表达式
List<Map.Entry<String, Pet>> maps = (List<Entry<String, Pet>>) map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue((Pet p1, Pet p2) -> {
return p1.name.length() - p2.name.length();
}))
.collect(Collectors.toList());
map升序排序及参数拼接为参数=值&参数=值
StringBuffer content = new StringBuffer();
// 按照key做首字母升序排列
List<String> keys = new ArrayList<String>(map.keySet());
Collections.sort(keys, String.CASE_INSENSITIVE_ORDER);
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i).toString();
String value = map.get(key).toString();
// 空串不参与签名
if (StringUtils.isBlank(value)) {
continue;
}
content.append((i == 0 ? "" : "&") + key + "=" + value);
}
String signSrc = content.toString();
if (signSrc.startsWith("&")) {
signSrc = signSrc.replaceFirst("&", "");
}
Map<String, Object> params = new LinkedHashMap<String, Object>();
StringBuilder par = new StringBuilder("");
if (map != null && map.size() != 0) {
Iterator<Map.Entry<String, String>> iterator = map.entrySet().stream().sorted(new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
return o1.getKey().compareTo(o2.getKey());
}
}).iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
String key = next.getKey();
String value = next.getValue();
par.append(key);
par.append("=");
par.append(value);
par.append("&");
params.put(key, value);
}
} else {
par.append("&");
}