多个map的某个值相对排序
用Collections.sort()只有这一种了:
Map<String, String> map1 = new HashMap<String, String>();
map1.put("aaa", "333");
map1.put("ads", "wewew");
map1.put("bb", "sdsdsdddds");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("aaa", "222");
map2.put("ad", "sdssdsd");
map2.put("bb", "sdadas");
Map<String, String> map3 = new HashMap<String, String>();
map3.put("aaa", "111");
map3.put("ad", "sssdsds");
map3.put("bbs", "sdasssdas");
List<Map<String, String>> result = new ArrayList<>();
result.add(map1);
result.add(map2);
result.add(map3);
Collections.sort(result, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
// return o1.get("aaa").compareTo(o2.get("aaa"));//升序
return o2.get("aaa").compareTo(o1.get("aaa"));// 降序排序
}
});
System.out.println("\n hashMap排序方式, 根据value排序: \n" + result);
在一个Map里的排序:
Map<String, String> map1 = new HashMap<String, String>();
map1.put("aaa", "333");
map1.put("ccc", "222");
map1.put("bbb", "111");
// 第一种Map排序方式, 根据key排序
List<Map.Entry<String, String>> entryList1 = new ArrayList<Map.Entry<String, String>>(map1.entrySet());
Collections.sort(entryList1, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> me1, Entry<String, String> me2) {
return me1.getKey().compareTo(me2.getKey()); // 升序排序
//return me2.getKey().compareTo(me1.getKey()); // 降序排序
}
});
System.out.println("第一种Map排序方式, 根据key排序: \n" + entryList1);
// 第一种Map排序方式, 根据value排序
List<Map.Entry<String, String>> entryList2 = new ArrayList<Map.Entry<String, String>>(map1.entrySet());
Collections.sort(entryList2, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> me1, Entry<String, String> me2) {
return me1.getValue().compareTo(me2.getValue()); // 升序排序
//return me2.getValue().compareTo(me1.getValue()); // 降序排序
}
});
System.out.println("\n第一种Map排序方式, 根据value排序结果: \n" + entryList2);
```