Java中实现引用类型集合的深拷贝(for循环遍历+BeanUtils)

2022-07-27,,,,

1、场景:

现有一个User类,将三个User对象存放在List集合Users中,将Users对象集合复制一份UsersNew,实现对UsersNew的修改但不影响原来的Users集合。

2、解决方法:

对Users集合进行for循环遍历,每次循环用BeanUtils.copyProperties(Object source, Object target)方法进行对象的拷贝

3、代码实现:

import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;

public class test006 {

    static class User{
        private String name;
        private Integer age;

        public User(String name,Integer age){
            this.name=name;
            this.age=age;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    public static void main(String[] args) {
        User user1 = new User("joker1",21);
        User user2 = new User("joker2",22);
        User user3 = new User("joker3",23);
        List<User> Users = new ArrayList<>();
        Users.add(user1);
        Users.add(user2);
        Users.add(user3);
        System.out.println(Users);
        List<User> UsersNew = new ArrayList<>();
        for (User user : Users){
            User userNew = new User("1",1);
            //copyProperties只能实现对对象的复制,不能直接作用于List集合。
            BeanUtils.copyProperties(user,userNew);
            UsersNew.add(userNew);
        }
        UsersNew.get(0).setName("joker");
        System.out.println(Users);
        System.out.println(UsersNew);
    }
}

本文地址:https://blog.csdn.net/qq_41065770/article/details/110233082

《Java中实现引用类型集合的深拷贝(for循环遍历+BeanUtils).doc》

下载本文的Word格式文档,以方便收藏与打印。