gpt4 book ai didi

java - 调用 arraylist 的 remove(int) 方法从所有类似的 arraylists 中删除该项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:57 26 4
gpt4 key购买 nike

好吧,我不是专业程序员,所以我的问题听起来可能很愚蠢。

我有这个代码:

ArrayList<Integer> list1 = new ArrayList<Integer>();
list1 = list2;

请注意 list2[1, 2, 4] 中包含三个项目。所以现在,list1 里面有相同的项目。但是当我调用 remove(index) 方法时。它从两个 ArrayList 中删除该项目。

这是我的完整代码:

ArrayList<Integer> list1 = new ArrayList<Integer>();
list1 = list2;
for (int i = 0; i < list1.size(); i++) {
if (list1.get(i) == practiceId) {
list1.remove(i);
}
}

我这样做的目的是解决一个有其他解决方案的问题。我问这个问题只是因为我很好奇并且想知道为什么会这样?以及如何在不从两个 ArrayList 中删除的情况下删除一项?

此外,我对发生这种情况的原因有一些想法。当我尝试逐步调试代码时,它显示两个 ArrayList 具有相同的 id。所以我认为这可能是问题的原因。如果这是真的,那么有没有一种方法可以创建一个新的 ArrayList 并将所有项目放入新的 ArrayList 中的其他 ArrayList 中,而不必一个接一个地添加所有项目?

最佳答案

因此,当您将这两个列表设置为彼此相等时,我认为您没有做您认为正在做的事情。这听起来很有趣。当您按照上面的方式进行操作时,实际上是将 list1 的内存地址设置为与 list2 相同。所以现在它们都指向内存中的同一个位置,当您删除它时将从两个列表中删除。

有道理吗?

关于java - 调用 arraylist 的 remove(int) 方法从所有类似的 arraylists 中删除该项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063843/

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