将类A的对象的每个字段复制到列表中classB的对象的每个字段

Jac*_*cob 5 java arraylist java-8

我有一个ClassA对象列表(例如字段:id,name,phone),需要将每个字段设置为另一个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<>();
Run Code Online (Sandbox Code Playgroud)

在这里,我想将ClassA的每个元素设置为ClassB对象并添加到list2中

ole*_*nik 5

这是非常标准的.您可以使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你的代码看起来像这样:

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());
Run Code Online (Sandbox Code Playgroud)