逻辑是 如果两个map里的第一个key的值大小相等,比较第二个key大小,以此类推进行排序
public static List<Map<String, String>> Fun() {
List<Map<String, String>> mapList = new ArrayList<>();
Map<String, String> mapEvent1 = new HashMap<>();
Map<String, String> mapEvent2 = new HashMap<>();
Map<String, String> mapEvent3 = new HashMap<>();
mapEvent1.put("countEvent", "12");
mapEvent1.put("threat", "2");
mapEvent1.put("env", "1");
mapEvent2.put("countEvent", "12");
mapEvent2.put("threat", "4");
mapEvent2.put("env", "2");
mapEvent3.put("countEvent", "12");
mapEvent3.put("threat", "2");
mapEvent3.put("env", "3");
mapList.add(mapEvent1);
mapList.add(mapEvent2);
mapList.add(mapEvent3);
mapList.sort((o1, o2) -> {
Integer o1Value = Integer.valueOf(o1.get("countEvent"));
Integer o2Value = Integer.valueOf(o2.get("countEvent"));
if (o2Value.compareTo(o1Value) == 0) {
Integer o3Value = Integer.valueOf(o1.get("threat"));
Integer o4Value = Integer.valueOf(o2.get("threat"));
if (o4Value.compareTo(o3Value) == 0) {
Integer o5Value = Integer.valueOf(o1.get("env"));
Integer o6Value = Integer.valueOf(o2.get("env"));
return o6Value.compareTo(o5Value);
}
return o4Value.compareTo(o3Value);
}
return o2Value.compareTo(o1Value);
});
return mapList;
}
排序结果: