为了账号安全,请及时绑定邮箱和手机立即绑定

通过获取 List<List<String>>() 的成员而不链接它们来创建新的

通过获取 List<List<String>>() 的成员而不链接它们来创建新的

德玛西亚99 2023-05-10 16:27:50
我正在尝试初始化 aList<String>listBuffer等于 a 的成员List<List<String>>listOfLists,而不链接它们。每次我添加到“listBuffer”时,它都会自动添加到“listOfLists”的那个成员。如何创建未链接到“listOfLists”的“listBuffer”?//初始问题    List<List<String>>listOfLists = new ArrayList<List<String>>();    listOfLists.add(new ArrayList<String>());    List<String>listBuffer = listOfLists.get(0);    List<String>listBuffer2 = listBuffer;//2ndBufferAttempt    listBuffer.add("anyString");    listBuffer2.add("anyString2");    System.out.println(listOfLists.get(0));    //Output is [anyString,anyString2]    //Simple Solution(Not sure whether its the best way)    List<List<String>>listOfLists = new ArrayList<List<String>>();    listOfLists.add(new ArrayList<String>());    List<String>listBuffer = new ArrayList<String>();    listBuffer.addAll(listOfLists.get(0));    listBuffer.add("anyString");    System.out.println(listOfLists.get(0));//Output is "[]"我希望输出为“[]”。输出改为“[anyString,anyString2]”。
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

编辑:更正了 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

创建新的、独立的、未链接的列表;那应该做的工作。


查看完整回答
反对 回复 2023-05-10
?
手掌心

TA贡献1942条经验 获得超3个赞

您从哪里获得基地以某种方式链接到 listOfLists。也许您可以出示您的base声明以便更清楚。

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

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


查看完整回答
反对 回复 2023-05-10
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信