猿问

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

我正在尝试初始化 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]”。


德玛西亚99
浏览 104回答 2
2回答

侃侃无极

编辑:更正了 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创建新的、独立的、未链接的列表;那应该做的工作。

手掌心

您从哪里获得基地以某种方式链接到 listOfLists。也许您可以出示您的base声明以便更清楚。编辑:如果您希望您的其他列表是分开的,而不是从其他地方获取它,请执行以下操作:List<String>&nbsp;listBuffer&nbsp;=&nbsp;new&nbsp;ArrayList<String>();
随时随地看视频慕课网APP

相关分类

Java
我要回答