【发布时间】:2015-08-12 01:43:20
【问题描述】:
我有一个 MainList 有 61 个元素和一个 subList 有 9 个元素。
在subList 的9 个元素中,有8 个在MainList。
我的目标只是删除两个列表中存在的那些对象。
for(int i = 0; i < subList.size();i++){
for(int j = 0; j < mainList.size();j++){
if(subList.get(i).equals(mainList.get(j))){
mainList.remove(j);
subList.remove(i);
break;
}
}
}
我面临的问题是,在 forloop 之后,subList 仍然保留 5 个元素,这意味着 forloop 只能找到 4 个相似的对象。
后来我又写了一个forloop来调试情况如下:
for(int i = 0; i < subList.size();i++){
for(int j = 0; j < mainList.size();j++){
if(subList.get(i).equals(mainList.get(j))){
System.out.println("something");
}
}
}
我可以看到 4 次“某物”。我想知道为什么第一个 forloop 没有找到所有相似的对象?
【问题讨论】:
-
不要使用索引循环并更改循环内的集合,这很可能会导致错误。请改用迭代器。