Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中添加所有原始列表后清除临时列表引用_Java_Android - Fatal编程技术网

Java 如何在android中添加所有原始列表后清除临时列表引用

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

强调文本如何更改、清除或删除其他列表引用?例如,我有两个名为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");
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