Java 使用stream流对List<Map<Object,Object>>类型的数据排序(含汉字) 的代码
时间: 2024-05-14 22:16:18 浏览: 64
java实现List中对象排序的方法
可以使用 Java 8 中的 `Comparator` 和 `Stream` 来对 List<Map<Object, Object>> 类型的数据进行排序,其中包含汉字。示例代码如下:
```java
List<Map<Object, Object>> dataList = new ArrayList<>();
// 假设 dataList 中包含多个 Map 对象,每个 Map 对象都包含 "name" 字段和 "age" 字段
// 按照 "name" 字段进行升序排序
List<Map<Object, Object>> sortedList = dataList.stream()
.sorted(Comparator.comparing(map -> map.get("name").toString()))
.collect(Collectors.toList());
// 按照 "name" 字段进行降序排序
List<Map<Object, Object>> sortedList = dataList.stream()
.sorted(Comparator.comparing(map -> map.get("name").toString(), Comparator.reverseOrder()))
.collect(Collectors.toList());
// 按照 "age" 字段进行升序排序
List<Map<Object, Object>> sortedList = dataList.stream()
.sorted(Comparator.comparing(map -> Integer.parseInt(map.get("age").toString())))
.collect(Collectors.toList());
// 按照 "age" 字段进行降序排序
List<Map<Object, Object>> sortedList = dataList.stream()
.sorted(Comparator.comparing(map -> Integer.parseInt(map.get("age").toString()), Comparator.reverseOrder()))
.collect(Collectors.toList());
```
需要注意的是,如果 List<Map<Object, Object>> 中的 Map 对象中包含的字段类型不一致,例如 "name" 字段是字符串类型,"age" 字段是整数类型,那么需要在 Comparator 中进行类型转换,否则会出现类型转换异常。另外,如果 "name" 字段中包含了汉字,按照字典序排序可能会出现问题,需要使用 Collator 进行排序。
阅读全文