构建数据:
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);