Map<String, String> result = myObjects.stream() .collect(Collectors.groupingBy(MyObject::getField1, Collectors.mapping(MyObject::getField2, Collectors.joining(",")))); 结果转为list类型
时间: 2024-03-16 16:40:57 浏览: 66
可以使用Java 8中的流操作将Map<String, String>类型转换为List<String>类型。
可以使用Map的entrySet()方法将Map中的键值对转换为Set集合,然后使用流操作进行遍历并转换为List类型。具体实现如下:
```java
List<String> resultList = myObjects.stream()
.collect(Collectors.groupingBy(MyObject::getField1,
Collectors.mapping(MyObject::getField2, Collectors.joining(","))))
.entrySet()
.stream()
.map(entry -> entry.getValue())
.collect(Collectors.toList());
```
首先,使用Collectors.groupingBy()方法对MyObject对象列表进行分组操作,根据getField1字段进行分组,并将同一组内的getField2字段使用逗号拼接起来。得到一个Map<String, String>类型的结果。
然后,使用Map的entrySet()方法将Map中的键值对转换为Set集合,然后使用流操作进行遍历。对于每一个键值对,使用map()方法将值部分(即拼接起来的字符串)进行转换,得到List<String>类型的结果。
最后,使用Collectors.toList()方法将流操作的结果转换为List<String>类型。
阅读全文