Java 8 map each field value of a List to another similar List

痞子三分冷 提交于 2019-12-08 04:30:21

问题


I have 2 List of objects:

List<User>
List<UserResource>

For User class:

public class User {

    private int id;

    private String name;

    private String address; 

    **SETTERS & GETTERS**
}

For UserResource class:

public class UserResource {

    private String name;

    private String address; 

    **SETTERS & GETTERS**
}

My List<User> has data and i want to map value in name and address to UserResource's name and address, using java 8 stream and lambda, but i not sure how to do it.

Search online for quite sometime but not able to find similar question. Something like:

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

I tried something like following, but im not using constructor, not really sure how to fix it.

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

回答1:


Your edit is logically correct, I assume you want to do it via setters, in this case define a lambda body and perform the operations there...

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


来源:https://stackoverflow.com/questions/44952425/java-8-map-each-field-value-of-a-list-to-another-similar-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!