欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-12 16:18:44
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.ut...

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