【发布时间】:2013-11-19 05:24:42
【问题描述】:
好吧,我不是专业程序员,所以我的问题可能听起来很傻。
我有这个代码:
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1 = list2;
请注意list2 在[1, 2, 4] 中包含三个项目。所以现在,list1 里面有相同的项目。
但是当我调用remove(index) 方法时。它会从 both ArrayLists 中删除该项目。
这是我的完整代码:
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 中,而不必逐个添加所有项目?
【问题讨论】:
-
只是为了记录,我不认为这是一个愚蠢的问题。我认为这是许多新程序员困惑的根源。