Java 8将一个List的每个字段值映射到另一个相似的List [英] Java 8 map each field value of a List to another similar List
问题描述
我有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());
您的编辑在逻辑上是正确的,我假设您想通过设置器进行操作,在这种情况下,请定义lambda正文并在其中执行操作...
>
.map(u -> {
UserResource ur = new UserResource();
ur.setName(u.getName());
ur.setAddress(u.getAddress());
return ur;
}).collect(...)
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());
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(...)
这篇关于Java 8将一个List的每个字段值映射到另一个相似的List的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!