Java 如何在android中添加所有原始列表后清除临时列表引用
强调文本如何更改、清除或删除其他列表引用?例如,我有两个名为listA和ListB的列表,listA有3个项目。现在我将listA中的所有项添加到listB,然后我更改listB中的任何项。listA也改变了。但我不想改变清单Java 如何在android中添加所有原始列表后清除临时列表引用,java,android,Java,Android,强调文本如何更改、清除或删除其他列表引用?例如,我有两个名为listA和ListB的列表,listA有3个项目。现在我将listA中的所有项添加到listB,然后我更改listB中的任何项。listA也改变了。但我不想改变清单 I'm trying in android studio language is JAVA. List<StringModel> listA=new List<>(); listA.add("One"); listA.add("Two"); li
I'm trying in android studio language is JAVA.
List<StringModel> listA=new List<>();
listA.add("One");
listA.add("Two");
listA.add("Three");
List<StringModel> listB=new List<>();
listB.addAll(listA);
listB.get(0).set("1");
我正在尝试android studio中使用的语言是JAVA。
List listA=新列表();
列表a.添加(“一”);
列表a.添加(“两个”);
增加(“三”);
List listB=新列表();
listB.addAll(listA);
listB.get(0.set)(“1”);
现在listB改变了,listA也改变了。但我不想改变原来的列表。这样清除和删除功能也可以工作
搜索后,重复列表的引用不清晰
我希望输出以不同的引用处理两个列表。首先,在这种情况下,我认为您指的是ArrayList:
ArrayList<String> listA=new ArrayList<String>();
listA.add("One");
listA.add("Two");
listA.add("Three");
ArrayList<String> listB=new ArrayList<String>();
listB.addAll(listA);
ClassA foo=new ClassA()
在这种情况下,foo包含对内存中分配的对象ClassA的引用,然后我们可以执行如下操作:
ClassA bar = foo
bar.x = 10
如果打印foo.x,您将看到值为10,因为您指向内存中的同一对象。现在,当您将元素添加到ArrayList时,您应该了解您正在添加对对象的引用,而不是实际值,并且当您更改listB中指向与listA中相同对象的字段值时,它当然会更改值
问题的解决方案是确保使用不可变对象,或使用复制构造函数生成与原始对象具有相同值的新对象。首先,列表是一个无法实例化的接口。
ClassA bar = foo
bar.x = 10