即使我没有更改或设置任何值,为什么全局列表会受到影响?

cor*_*rin 2 java list arraylist

这是我的示例对象
object name: OBJ
object properties: String name, int age

现在我有2个全球名单

List<OBJ> lstobj = new ArrayList<OBJ>;
List<OBJ> anotherlist = new ArrayList<OBJ>;
Run Code Online (Sandbox Code Playgroud)

然后我在这两个列表中添加了一些记录

Name:Ben Age:5
Name:Charles Age: 6
Name:Dan Age:7

现在我需要将查尔斯的年龄改为"10"

首先,我应该在列表中找到Charles并从列表中获取obj

OBJ newobj = new OBJ;
for(OBJ obj : lstobj){
  if(obj.getName.equals("Charles"){
    newobj = obj;
   }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要将检索到的obj的年龄设置为10.

newobj.setAge(10);

此操作不仅会更改"lstobj",还会更改"其他列表".如何在不影响两个全局列表的情况下设置检索到的obj?

NPE*_*NPE 6

列表存储对对象的引用.如果将相同的引用粘贴到多个列表中,然后更改对象,它将随处更改.

如果你希望的内容,lstobj并且anotherlist是完全相互独立的,需要不同的对象插入到他们.这可能涉及制作对象的副本.