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

时间:2017-07-06 14:55:47

标签: lambda java-8 java-stream

我有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>有数据,我想将nameaddress中的映射到UserResource的{​​{1}}和name,使用java 8 stream和lambda,但我不知道该怎么做。

在线搜索相当一段时间但无法找到类似的问题。类似的东西:

address

我尝试了类似下面的内容,但我不使用构造函数,不确定如何解决它。

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

1 个答案:

答案 0 :(得分:5)

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

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