Java 使用stream流对List<Map<Object,Object>>类型的数据排序(含汉字) 的代码
时间: 2024-05-14 20:16:18 浏览: 11
可以使用 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 进行排序。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)