stream流对一个对象集合处理,收集为其中两个属性的集合,键可能重复
时间: 2024-05-12 18:20:15 浏览: 104
可以使用Java 8的Stream流的collect方法,结合Collectors工具类的toMap方法来实现。具体实现如下:
假设有一个对象集合List<MyObject>,其中MyObject有两个属性:key和value。
```java
List<MyObject> myObjects = ...;
Map<String, List<Object>> result = myObjects.stream()
.collect(Collectors.toMap(MyObject::getKey,
obj -> Collections.singletonList(obj.getValue()),
(list1, list2) -> {
List<Object> combinedList = new ArrayList<>(list1);
combinedList.addAll(list2);
return combinedList;
}));
```
代码中,toMap方法的第一个参数是key的获取方法,第二个参数是value的获取方法,这里使用Collections.singletonList将value封装为只有一个元素的List,第三个参数是当key重复时如何合并value的方法,这里采用了将两个List合并为一个的方式。最终的结果是一个Map<String, List<Object>>,其中键是key属性的值,值是所有value属性值的集合。
阅读全文