Java中实现引用类型集合的深拷贝(for循环遍历+BeanUtils)
程序员文章站
2022-12-07 19:33:50
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