gpt4 book ai didi

Java并发修改

转载 作者:行者123 更新时间:2023-12-01 08:57:14 25 4
gpt4 key购买 nike

我有以下代码:

System.out.println(dislist.size());

for (int k = 0; k < 10; k++) {
System.out.println(k + dislist.get(k).first + dislist.get(k).second);

if (!dislist.get(k).first.equals(Nodename)) {
if (dislist.get(k).first.equals(myfirst) ||
dislist.get(k).first.equals(mysecond) ||
dislist.get(k).second.equals(myfirst) ||
dislist.get(k).second.equals(mysecond)) {
dislist.remove(k);
}
}
}
}

问题是:开头的打印清楚地表明 dislist.size() 是 10。但是,我得到一个数组越界异常,告诉我列表的大小不超过 6。是的,我确实在几行之前将新对象添加到列表中。我想当循环开始时尚未完成。有没有办法强制 Java(在同一方法中)仅在列表中确实有 10 个对象时才开始循环?

最佳答案

您在遍历列表时从列表中删除元素。这就是大小发生变化的原因。

dislist.remove(k);

创建一个新列表,并将要删除的每个元素添加到其中。循环完成后,使用 disList.removeAll(listOfElementsToRemove) 一次删除它们。

关于Java并发修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183070/

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