gpt4 book ai didi

java - 数组列表循环故障

转载 作者:行者123 更新时间:2023-12-02 10:54:30 25 4
gpt4 key购买 nike

我有一个包含 61 个元素的 MainList 和一个包含 9 个元素的 subListsubList 中有 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;
}
}
}

我面临的问题是,在for循环之后,subList仍然保留5个元素,这意味着for循环只能找到4个相似的对象。

之后,我又编写了一个for循环来调试情况,如下所示:

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 没有找到所有相似的对象?

最佳答案

为什么不使用 Collection.removeAll()方法:

mainList.removeAll( subList );
List

remove() 会更改索引。建议使用Iterator来遍历集合并从集合中删除:

for ( Iterator<...> iterator = mainList.iterator() ; iterator.hasNext() ; ) {
Object o = iterator.next();
if (subList.contains( o ) ) { iterator.remove(); }
}

干杯,

关于java - 数组列表循环故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525371/

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