构建数据:
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "李四");
map1.put("age", 23);
map1.put("wight", 74);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "李四老婆");
map2.put("age", 31);
map2.put("wight", 65);
list.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "李四表哥");
map3.put("age", 27);
map3.put("wight", 53);
list.add(map3);
Map<String, Object> map4 = new HashMap<>();
map4.put("name", "李四妈妈");
map4.put("age", 57);
map4.put("wight", 49);
list.add(map4);
System.out.println(" 排序前:");
System.out.println(list);
构建数据为:

此例以 age 排序
升序方法1:
System.out.println("\n 升序排(方法1)");
List<Map<String, Object>> ascList = list.stream().sorted(Comparator.comparing(map -> map.get("age").toString())).collect(Collectors.toList());
System.out.println(ascList);

构建排序字段库
/**
* 自定义排序字段库
*/
class MapSortFieldFactory{
public static Integer getMapValueByAge(Map<String, Object> map){
return (Integer) map.get("age");
}
}
升序方法2:
System.out.println("\n 升序排(方法2)");
List<Map<String, Object>> ascList2 = list.stream().sorted(Comparator.comparing(MapSortFieldFactory::getMapValueByAge)).collect(Collectors.toList());
System.out.println(ascList2);

降序:
System.out.println("\n 降序排");
List<Map<String, Object>> descList = list.stream().sorted(Comparator.comparing(MapSortFieldFactory::getMapValueByAge).reversed()).collect(Collectors.toList());
System.out.println(descList);

浙公网安备 33010602011771号