【发布时间】:2017-07-06 14:55:46
【问题描述】:
我有 2 个对象列表:
List<User>
List<UserResource>
对于User 类:
public class User {
private int id;
private String name;
private String address;
**SETTERS & GETTERS**
}
对于UserResource 类:
public class UserResource {
private String name;
private String address;
**SETTERS & GETTERS**
}
我的List<User> 有数据,我想使用 java 8 流和 lambda 将 name 和 address 中的 值 映射到 UserResource 的 name 和 address ,但我不知道该怎么做。
在网上搜索了一段时间,但找不到类似的问题。比如:
List<User> users = **data inserted**
List<UserResource> resources = users.forEach(u ->{
u.setName(users.getName());
u.setAddress(users.getAddress());
});
我尝试了类似以下的方法,但我没有使用构造函数,不确定如何修复它。
List<UserResource> userResources = users.stream().map(u -> new UserResource(u.getName(), u.getAddress())).collect(Collectors.toList());
【问题讨论】:
-
尝试一些不涉及
forEach... -
是的,是的!我知道我们可以用
stream和map做一些事情,但我不确定该怎么做。 -
参见the tutorial 和package documentation。后者在“可变缩减”部分中有一个示例,只需对您的用例进行少量调整……
-
@hades 你必须先自己尝试一下。如果遇到问题,可以作为问题提出。
-
你的编辑是正确的......什么不起作用?你想通过 setter 来做吗?
标签: lambda java-8 java-stream