gpt4 book ai didi

java - ConcurrentModificationException 即使在 foreach 之外更改值

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

我有以下代码

                boolean postojaoJePrijelaz = true;
epsilonStanja = sljedecaStanja;
while(postojaoJePrijelaz) {
for (String epsilonStanje : epsilonStanja) {
for (Prijelaz trenutniPrijelaz : prijelazi) {
postojaoJePrijelaz = false;
if (trenutniPrijelaz.postojiPrijelaz(epsilonStanje.trim(), "$")) {
sljedecaStanja.addAll(trenutniPrijelaz.getSkupIzlaznihStanja());
epsilonSljedecaStanja.addAll(trenutniPrijelaz.getSkupIzlaznihStanja());
postojaoJePrijelaz = true;
}
}
}
epsilonStanja = epsilonSljedecaStanja;
epsilonSljedecaStanja.clear();
}

即使我在完成 foreach 循环后设置了 epsilonStanje=epsilonSljedecaStanja ,编译器也会给出 e ConcurrentModificationException 。我尝试了 debuggng,但似乎无法解决此问题。我正在制作的程序是单线程的

编辑:

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at com.company.Main.main(Main.java:55)

最佳答案

epsilonStanjaepsilonStanja 都指向同一个对象,如下所示。

            epsilonStanja = sljedecaStanja;

for (String epsilonStanje : epsilonStanja) {
...
sljedecaStanja.addAll(trenutniPrijelaz.getSkupIzlaznihStanja());
...
}

迭代时无法添加数据。

解决方案:创建一个单独的列表,最后根据您的要求合并它或尝试以下代码:

epsilonStanja.addAll(sljedecaStanja);

关于java - ConcurrentModificationException 即使在 foreach 之外更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23389546/

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