gpt4 book ai didi

java - ArrayList 只存储最后一个元素

转载 作者:行者123 更新时间:2023-12-04 00:51:39 25 4
gpt4 key购买 nike

我试图实现的是在有空行时将文本输入分成几组。我想要实现这一点的方法是将行添加到 ArrayList< String > temp 直到有一个空行。之后,我将 temp 添加到 ArrayList > 组。但它似乎只将最后的临时值添加到组中。我不明白为什么。这是代码:

public static void main(String... args) throws IOException {
List<String> data = new ArrayList<>();
File f = new File("input6.txt");

try (Scanner sc = new Scanner(f)) {
while (sc.hasNext()) {
data.add(sc.nextLine());
}
} catch(FileNotFoundException e) {
e.printStackTrace();
}

List<List<String>> group = new ArrayList<>();
List<String> temp = new ArrayList<>();

for (String line : data) {
temp.add(line);
if (line.trim().isEmpty()) {

group.add(temp);
temp.clear();
}
}
}

最佳答案

问题是您总是清除已添加到列表temp.clear();)。无需重复使用相同的引用,只需将 temp 重新分配给新列表即可。请改为执行以下操作:

    ArrayList<ArrayList<String>> group = new ArrayList<ArrayList<String>>();
ArrayList<String> temp = new ArrayList<String>();
for(String line : data) {
temp.add(line);
if(line.trim().isEmpty()) {
group.add(temp);
temp = new ArrayList<String>();
}
}

关于java - ArrayList 只存储最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65908277/

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