gpt4 book ai didi

JAVA用对象填充临时Arraylist,然后将其添加到由arrayLists组成的ArrayList

转载 作者:行者123 更新时间:2023-11-29 10:11:43 24 4
gpt4 key购买 nike

我遍历一个由对象组成的数组。我想找到这个数组的某些部分,其中相同的特定对象彼此跟随。

[a,b,c,#,#,#,h,g,a,#,#,s,#.h] --> 我想找到 #,#,# 和 #,# (#是具体对象)

我已经想出了如何做到这一点:如果我找到一个“#”,我会将这个对象添加到一个临时的 ArrayList 中。如果下一个对象也是“#”,我也会添加它,否则我会清除 tmplist,因为它是一个“#”。如果下一个对象不是 # 但 tmplist 大于 1,我想将 tmplist 添加到 2d ArrayList(由 ArrayList 组成的 ArrayList)并清除 tmplist,以便我可以找到其他部分。

这是我的问题:如果我这样做,2d arraylist 不包含模板列表的深拷贝--> 2d arraylist 由空列表组成,因为我在每个找到“模式”后清除 tmplist。我该如何解决这个问题?

一些代码可能会更好地解释它:

List<Object> tmplist = new ArrayList<Object>();
for (int i = 0; i<array.length(); i++) {
if (array[i].equals(#)) {
tmplist.add(array[i]);
if (!array[i+1].equals(#) && tmplist.size() < 2){
tmplist.clear();
} else if (!array[i+1].equals(#) && tmplist.size() > 1) {
pattern.add(tmplist);
tmplist.clear();
}
}
}
//pattern is the 2d ArrayList (ArrayList which consists of ArrayLists)

最佳答案

如果您的 2d ArrayList 是:result

 result.add(new ArrayList<>(tmpList));

通过这样做,您并没有添加 tmpList 本身,而是添加了一个包含 tmpList 值的新列表。因此,即使您执行 tmpList.clear(),它也不会影响您的 result 中的数组列表。

关于JAVA用对象填充临时Arraylist,然后将其添加到由arrayLists组成的ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571813/

24 4 0