gpt4 book ai didi

JAVA,列表列表

转载 作者:行者123 更新时间:2023-12-02 03:15:27 27 4
gpt4 key购买 nike

我有列表和列表列表:

ArrayList<String> singleList = new ArrayList<String>();
ArrayList<ArrayList<String>> listOfLists = new ArrayList<ArrayList<String>>();

我不明白这些列表的行为。我决定向您展示一个简单的示例:

listOfLists.clear();

singleList.clear();
singleList.add("A");
singleList.add("B");
singleList.add("C");
listOfLists.add(singleList);

singleList.clear();
singleList.add("D");
singleList.add("E");
singleList.add("F");
listOfLists.add(singleList);

singleList.clear();
singleList.add("G");
singleList.add("H");
singleList.add("I");
listOfLists.add(singleList);

for(int x = 0; x < listOfLists.size(); x++)
{
for(int z = 0; z < singleList.size(); z++)
{
System.out.print(listOfLists.get(x).get(z));
System.out.print(" ");
}
System.out.println("");
}

我得到的结果是:

GHIGH IGH I

相反:

ABCDEFGH I

我的思维哪里有问题?我应该怎么做才能得到上面的结果?

最佳答案

在 Java 中,对象总是作为引用传递。

当您添加singleList时至listOfLists ,您实际上是在向 singleList 添加引用 。由于您已添加 3 次,因此您得到的当前值为 singleList ,重复3次。

singleList“先前值”没有存储在任何地方,所以 A B CD E F迷失了。

您需要使用new ArrayList<String>(singleList)来复制您的列表。 。然后,将此副本添加到 listOfLists .

关于JAVA,列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com