stream流对某一字段相同的另一个字段的值以,隔开合并
时间: 2024-03-15 19:47:29 浏览: 154
Java Stream 流实现合并操作示例
5星 · 资源好评率100%
可以使用Java 8的Stream API中的Collectors.groupingBy()和Collectors.mapping()方法来实现。假设有一个包含对象的List,每个对象包含两个字段,如下所示:
```
List<MyObject> myObjects = Arrays.asList(
new MyObject("A", 1),
new MyObject("B", 2),
new MyObject("A", 3),
new MyObject("C", 4),
new MyObject("B", 5)
);
```
现在想要将对象按照第一个字段进行分组,并将每个分组中第二个字段的值以逗号隔开合并成一个字符串。可以使用以下代码实现:
```
Map<String, String> result = myObjects.stream()
.collect(Collectors.groupingBy(MyObject::getField1,
Collectors.mapping(MyObject::getField2, Collectors.joining(","))));
```
其中MyObject是对象类名,getField1和getField2是对象类中的两个字段名。执行以上代码后,会得到一个Map,其中键为第一个字段的值,值为第二个字段的值以逗号隔开合并后的字符串。例如,对于以上的示例数据,得到的结果为:
```
{A=1,3, B=2,5, C=4}
```
阅读全文