怎么用stream() 把多个集合中对象某一部分数据 添加到另一个集合对象的属性中 从而组合成一条完整的数据
时间: 2024-03-12 10:49:07 浏览: 77
可以通过以下步骤实现:
1. 创建一个空的目标集合对象,用于存储组合后的完整数据。
2. 使用`Stream`的`flatMap`方法将多个集合对象合并成一个流对象。
3. 使用`Stream`的`map`方法将每个集合中的对象转换成一个新的包含目标属性的对象。
4. 使用`Stream`的`forEach`方法将转换后的对象添加到目标集合对象中。
以下是示例代码:
```java
List<User> users1 = Arrays.asList(
new User("Tom", 20),
new User("Jerry", 21)
);
List<User> users2 = Arrays.asList(
new User("Alice", 22),
new User("Bob", 23)
);
List<User> users3 = Arrays.asList(
new User("John", 24),
new User("Mary", 25)
);
List<CombinedUserData> combinedUserDataList = new ArrayList<>();
List.of(users1, users2, users3)
.stream()
.flatMap(Collection::stream)
.map(user -> new CombinedUserData(user.getName(), user.getAge(), "Other data"))
.forEach(combinedUserDataList::add);
```
其中,`User`为原始对象,`CombinedUserData`为目标对象,示例中将`User`中的`name`和`age`属性添加到`CombinedUserData`对象中的对应属性中,同时添加一个固定的字符串`"Other data"`到`CombinedUserData`对象的另一个属性中。最终得到的`combinedUserDataList`集合中包含了所有对象的完整数据。
阅读全文