一类的一个对象的每个字段复制到在列表CLASSB的对象的每个字段

问题描述 投票:5回答:2

我有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

java arraylist java-8
2个回答
5
投票

这是非常标准。你可以使用Streammap方法来修改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());

1
投票

如果ClassB也有类似的构造为ClassA的,那么你需要做的一切是:

List<ClassB> classBList = classAList.stream()
        .map(a -> new ClassB(a.getId(), a.getName(), a.getPhone()))
        .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.