gpt4 book ai didi

抛出 java.util.ArrayList$Itr.checkForComodification 异常

转载 作者:行者123 更新时间:2023-11-30 07:01:17 29 4
gpt4 key购买 nike

当运行下面的代码时,我得到了上面的异常,但我不知道为什么或如何修复它。我很确定它来自

    for(int node : adjacent(currentnode))
{
//System.out.println(adjacent(currentnode));
//System.out.println(node);
if (remainingnodes.contains(getNode(node)))
{
adjacent.add(node);
remainingnodes.remove(getNode(node));
//System.out.println(remainingnodes);
}
}

getNode 只接受一个整数并返回相应的节点。在 remainingnodes.contains 中使用 getNode 之前,我以前没有得到异常,但当时它正在删除组件,所以我不得不更改它,现在我得到了异常。

public int distance(int target, List<Integer> detectives)
{
List<Integer> adjacent = new ArrayList<>();
Set<Node<Integer>> remainingnodes = new HashSet<Node<Integer>>();
List<Integer> currentnodes = new ArrayList<>();

int distance = 0;
int i = 0;



currentnodes.add(target);
remainingnodes = graph.getNodes();
remainingnodes.remove(getNode(target));

while (detectives.size() != 0)
{

for (int currentnode : currentnodes)
{

for(int node : adjacent(currentnode))
{
//System.out.println(adjacent(currentnode));
//System.out.println(node);
if (remainingnodes.contains(getNode(node)))
{
adjacent.add(node);
remainingnodes.remove(getNode(node));
//System.out.println(remainingnodes);
}
}
for (int detective : detectives)
{
if (currentnode == detective)
{
distance = distance + i;
detectives.remove(detective);
}
}
}

currentnodes.clear();
currentnodes = adjacent;
i++;
}

谢谢亚瑟

最佳答案

您不能为每个循环修改 List。如果您想删除循环中的任何元素,请使用 iterator。您可以使用 iterator.remove(); 删除元素,这会删除 iterator 中的当前元素。

关于抛出 java.util.ArrayList$Itr.checkForComodification 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954427/

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