gpt4 book ai didi

java - 将一个 ArrayList 添加到另一个 ArrayList

转载 作者:行者123 更新时间:2023-11-30 06:15:52 25 4
gpt4 key购买 nike

我在向 ArrayList 添加新元素时遇到问题,我会告诉你我的问题:

ArrayList<ArrayList<String>> arr1= new ArrayList<ArrayList<String>>();
ArrayList<String> arr2= new ArrayList<String>();

因此,我从文本文件中添加新元素,逐行拆分它,然后逐字拆分,例如:我们假设我的文本文件包含:

a,b,c,d
e,f,g,h
i,j,k,l

我需要的是将每个单词放入 arr2 中,然后使用以下代码将 arr2 放入 arr1 中:

while ((line = file.readLine()) != null) {
String[] words = line.split("\\,");
if (arr2.isEmpty()) {
for (int ae = 0; ae < words.length; ae++) {
arr2.add(ae, words[ae]);
}
arr1.add(arr2);
} else {
for (int ae = 0; ae < words.length; ae++) {
arr2.set(ae, words[ae]);
}
arr1.add(arr2);
}
}
file.close();

所以我需要的是:[[a,b,c,d],[e,f,g,h],[i,j,k,l]]但我得到:[[i,j,k,l],[i,j,k,l],[i,j,k,l]]

请问有什么解决办法吗?!

最佳答案

java它涉及引用,因此您必须创建新的 arr2每次您阅读该行时,因为当您添加 arr2 时至arr1它仍然保留arr2的引用同样,因此您对 arr2 所做的每个更改都会影响 arr1 内部的数组 + 将添加到 arr1 的数组 arr2 (它们都是相同的数组)。

一种解决方案是在 while 循环内声明 arr2,如下所示 ArrayList<String> arr2= new ArrayList<String>();正如@dehasi 在评论中所说,

while ((line = file.readLine()) != null) {
ArrayList<String> arr2= new ArrayList<String>();
String[] words = line.split("\\,");
for (int ae = 0; ae < words.length; ae++) {
arr2.add(words[ae]);
}
arr1.add(arr2);

}
file.close();

希望有帮助。

关于java - 将一个 ArrayList 添加到另一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213035/

25 4 0