今天工作中用到了使用流对list中map进行排序,需要倒序的时候使用reversed方法结果编译不通过,如下。
void streamSort() {
List<Map<String, String>> maps = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new HashMap<>();
Map<String, String> map3 = new HashMap<>();
map1.put("value","1111_202311202131");
map2.put("value","1111_202311202132");
map3.put("value","1111_202311202130");
maps.add(map1);
maps.add(map2);
maps.add(map3);
maps = maps.stream().sorted(Comparator.comparing(map0 -> map0.get("value")).reversed()).collect(Collectors.toList());
}
因为泛型的原因,所以需要对map0对象进行类型的声明,否则会视为object类型对象无法调用get方法
maps = maps.stream().sorted(Comparator.comparing((Map<String,String> map0) -> map0.get("value")).reversed()).collect(Collectors.toList());
也可以使用如下写法
maps = maps.stream().sorted((map01, map02) -> map02.get("value").compareTo(map01.get("value"))).collect(Collectors.toList());