有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。ArrayList$Itr。引发CheckForComodition异常

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

    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中使用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++;
    }

谢谢 亚瑟


共 (0) 个答案