Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 创建新列表<;字符串>;()通过获取列表中的成员<;列表<;字符串>&燃气轮机;()没有将它们联系起来_Java_List - Fatal编程技术网

Java 创建新列表<;字符串>;()通过获取列表中的成员<;列表<;字符串>&燃气轮机;()没有将它们联系起来

Java 创建新列表<;字符串>;()通过获取列表中的成员<;列表<;字符串>&燃气轮机;()没有将它们联系起来,java,list,Java,List,我正在尝试初始化一个ListBuffer,它等于ListofList的一个成员,而不链接它们。每次我添加到“listBuffer”时,它都会自动添加到“ListofList”的那个成员。如何创建未链接到“ListofList”的“listBuffer”? //初始问题 ListofList=newArrayList(); add(newarraylist()); ListBuffer=listOfLists.get(0); ListBuffer2=listBuffer//第二个缓冲区 添加(“任

我正在尝试初始化一个
ListBuffer
,它等于
ListofList
的一个成员,而不链接它们。每次我添加到“listBuffer”时,它都会自动添加到“ListofList”的那个成员。如何创建未链接到“ListofList”的“listBuffer”? //初始问题

ListofList=newArrayList();
add(newarraylist());
ListBuffer=listOfLists.get(0);
ListBuffer2=listBuffer//第二个缓冲区
添加(“任何字符串”);
listBuffer2.添加(“anyString2”);
System.out.println(listOfLists.get(0));
//输出为[anyString,anyString2]
//简单的解决方案(不确定这是否是最好的方法)
ListOfList=新的ArrayList();
add(newarraylist());
ListBuffer=新的ArrayList();
addAll(listOfLists.get(0));
添加(“任何字符串”);
System.out.println(listOfLists.get(0));
我希望输出为“[]”。
相反,输出是“[anyString,anyString2]”

您从中获取基本信息的地方以某种方式链接到列表。也许您可以显示您的
基本声明,以使其更清晰

编辑:如果希望其他列表分开,而不是从其他地方获取,请执行以下操作:

List<String> listBuffer = new ArrayList<String>();
List listBuffer=new ArrayList();

编辑:已更正java.util.Collections.copy()的参数列表

=
不会创建任何类型的新实例,而只是复制一个指针。在代码中,
listOfLists.get(0)
listBuffer
listBuffer2
指向同一内存区域,因此它们链接在一起并不奇怪。如果你不想链接它们,就不要链接它们。我就是这么简单

List<String>listBuffer;
List<String>listBuffer2;
Collections.copy(listBuffer, listOfLists.get(0));
Collections.copy(listBuffer2, listBuffer);//2ndBufferAttempt
listbuffer;
ListBuffer2;
Collections.copy(listBuffer,listOfLists.get(0));
Collections.copy(listBuffer2,listBuffer)//第二个缓冲区

创建新的、独立的、未链接的列表;这应该可以完成任务。

这应该在评论部分,因为它不是答案。你所说的基本声明是什么意思?顶部是“ListofLists=new ArrayList()”。@RobOhRob我没有足够的代表来comment@ryburger你应该争取足够的代表发表评论。@RobOhRob啊,stackoverflow Grand肯定很棒,需要两个参数。也许你指的是不同的
Collections
类;如果是这种情况,请指定哪个。这是我的错误,“base”是“listOfLists”。事实证明,[Collections.copy]将要求新列表与传入列表的大小相同,这会很烦人。“addAll”方法仍然是一个更简单、更短的解决方案。事实证明,
Collections.copy()
使新列表与源列表的大小相同。由于目标列表在此代码中不包含任何元素,
Collections.copy()
执行所需的所有操作。但你是对的
listBuffer.addAll(listOfLists.get(0))
是一个完美的选择。即使
listBuffer
已经包含一些元素,它也可以工作。
List<String>listBuffer;
List<String>listBuffer2;
Collections.copy(listBuffer, listOfLists.get(0));
Collections.copy(listBuffer2, listBuffer);//2ndBufferAttempt