我有ClassA的(字段例如:ID,姓名,电话)的对象的列表和需要设置每一个这些领域的中ClassB的(字段:studentId,studentName和studentPhone)的另一对象的名单。有没有在Java中8一个简单的方法?基本上,ClassA的是我的DTO和ClassB是DAO对象。例如:
List<ClassA> list1 = new ArrayList<>();
list1.add(new ClassA(12,"John","1111111111"))
List<ClassB> list2 = new ArrayList<>();
在这里,我想每个类的元素设置为Class对象,并添加到列表2
这是非常标准。你可以使用Stream
和map
方法来修改ClassA
的一个实例。
假使,假设:
public class ClassA {
private final int id;
private final String name;
private final String phone;
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
}
public class ClassB {
private int studentId;
private String studentName;
private String studentPhone;
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public void setStudentPhone(String studentPhone) {
this.studentPhone = studentPhone;
}
}
然后,你的代码看起来是这样的:
List<ClassA> list1 = Collections.emptyList();
List<ClassB> list2 = list1.stream()
.map(a -> {
ClassB b = new ClassB();
b.setStudentId(a.getId());
b.setStudentName(a.getName());
b.setStudentPhone(a.getPhone());
return b;
})
.collect(Collectors.toList());
如果ClassB
也有类似的构造为ClassA
的,那么你需要做的一切是:
List<ClassB> classBList = classAList.stream()
.map(a -> new ClassB(a.getId(), a.getName(), a.getPhone()))
.collect(Collectors.toList());