java—将类a对象的每个字段复制到列表中类B对象的每个字段

crcmnpdw  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(331)

我有一个classa对象的列表(字段例如:id、name、phone),需要将这些字段中的每一个设置到classb对象的另一个列表中(字段:studentid、studentname和studentphone)。Java8中有简单的方法吗?基本上,classa是我的dto,classb是dao对象。例如:

List<ClassA> list1 = new ArrayList<>();
list1.add(new ClassA(12,"John","1111111111"))
List<ClassB> list2 = new ArrayList<>();

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

gv8xihay

gv8xihay1#

这是相当标准的。你可以用 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());
elcex8rz

elcex8rz2#

如果 ClassB 有一个类似于 ClassA ,那么您需要做的就是:

List<ClassB> classBList = classAList.stream()
        .map(a -> new ClassB(a.getId(), a.getName(), a.getPhone()))
        .collect(Collectors.toList());

相关问题