【发布时间】:2011-10-25 21:52:16
【问题描述】:
试图复制一个 ArrayList。底层对象很简单,包含字符串、整数、BigDecimals、日期和 DateTime 对象。 如何确保对新 ArrayList 所做的修改不会反映在旧 ArrayList 中?
Person morts = new Person("whateva");
List<Person> oldList = new ArrayList<Person>();
oldList.add(morts);
oldList.get(0).setName("Mortimer");
List<Person> newList = new ArrayList<Person>();
newList.addAll(oldList);
newList.get(0).setName("Rupert");
System.out.println("oldName : " + oldList.get(0).getName());
System.out.println("newName : " + newList.get(0).getName());
干杯, P
【问题讨论】:
-
Java 是通过引用传递的。因此,最初您在两个列表中都有“相同”的对象引用......您需要使用
clone()方法。 AFAIK 你必须分别在每个项目上调用它