Java 8将List的每个字段值映射到另一个类似的List

had*_*des 1 lambda java-8 java-stream

我有2个对象列表:

List<User>
List<UserResource>
Run Code Online (Sandbox Code Playgroud)

对于User类:

public class User {

    private int id;

    private String name;

    private String address; 

    **SETTERS & GETTERS**
}
Run Code Online (Sandbox Code Playgroud)

对于UserResource类:

public class UserResource {

    private String name;

    private String address; 

    **SETTERS & GETTERS**
}
Run Code Online (Sandbox Code Playgroud)

List<User>有数据,我想映射nameaddressUserResourcenameaddress,用java 8个流和lambda,但我不知道该怎么做.

在线搜索相当一段时间,但无法找到类似的问题.就像是:

List<User> users = **data inserted**
List<UserResource> resources = users.forEach(u ->{
    u.setName(users.getName());
    u.setAddress(users.getAddress());
});
Run Code Online (Sandbox Code Playgroud)

我试过像下面这样的东西,但我不使用构造函数,不确定如何解决它.

List<UserResource> userResources = users.stream().map(u -> new UserResource(u.getName(), u.getAddress())).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 5

你的编辑在逻辑上是正确的,我假设你想通过setter来做,在这种情况下定义一个lambda体并在那里执行操作......

.map(u -> { 
     UserResource ur = new UserResource();
     ur.setName(u.getName());
     ur.setAddress(u.getAddress());
     return ur;
 }).collect(...)
Run Code Online (Sandbox Code Playgroud)