【问题标题】:copying each field of an object of Class A to each field of an object of classB in list将 A 类对象的每个字段复制到列表中 B 类对象的每个字段
【发布时间】:2019-06-28 11:18:58
【问题描述】:

我有一个 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<>();

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

【问题讨论】:

    标签: java arraylist java-8


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果ClassB 有一个与ClassA 类似的构造函数,那么你需要做的就是:

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

      【讨论】:

        猜你喜欢
        • 2021-05-20
        • 1970-01-01
        • 2016-12-29
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多