Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中带迭代器的UnsupportedOperationException_Java - Fatal编程技术网

Java中带迭代器的UnsupportedOperationException

Java中带迭代器的UnsupportedOperationException,java,Java,在我的模型中,我有不同的场景,在每个场景中,道路网络(图)的某些路段(边缘)降级(丧失通行能力)或中断(由于总损坏而移除)。出于这个原因,我正试图迭代每个场景的一组边,从原始网络开始,并通过更改一些边的容量和删除一些其他边来更新网络。开始时,我没有使用迭代器对边进行迭代,这导致了“ConcurrentModificationException”。然后我修改了代码以便使用迭代器,但这次它不允许我在迭代器(edgeIt.remove())中使用remove方法。我如何解决这个问题?提前谢谢你的帮助

在我的模型中,我有不同的场景,在每个场景中,道路网络(图)的某些路段(边缘)降级(丧失通行能力)或中断(由于总损坏而移除)。出于这个原因,我正试图迭代每个场景的一组边,从原始网络开始,并通过更改一些边的容量和删除一些其他边来更新网络。开始时,我没有使用迭代器对边进行迭代,这导致了“ConcurrentModificationException”。然后我修改了代码以便使用迭代器,但这次它不允许我在迭代器(edgeIt.remove())中使用remove方法。我如何解决这个问题?提前谢谢你的帮助

ArrayList FWS=new ArrayList();

对于(int w=0;w最有可能的是
edgeSet()
返回的
集合不支持
remove()
操作,或者它确实支持
remove()
,但它的
迭代器却不支持


为了解决这个问题(以及
ConcurrentModificationException
),您必须在一个单独的
集合中收集要删除的边,在完成迭代后,通过图形的适当API删除它们。

很可能是
edgeSet()返回的
集合
根本不支持
remove()
操作,或者它确实支持
remove()
,但它的
迭代器却不支持


为了解决这个问题(以及
ConcurrentModificationException
),您必须在一个单独的
集合中收集要删除的边,在完成迭代后,通过图形的适当API删除它们。

很可能是
edgeSet()返回的
集合
根本不支持
remove()
操作,或者它确实支持
remove()
,但它的
迭代器却不支持


为了解决这个问题(以及
ConcurrentModificationException
),您必须在一个单独的
集合中收集要删除的边,在完成迭代后,通过图形的适当API删除它们。

很可能是
edgeSet()返回的
集合
根本不支持
remove()
操作,或者它确实支持
remove()
,但它的
迭代器却不支持


为了解决这个问题(以及
ConcurrentModificationException
),您必须在一个单独的
集中收集要删除的边,在完成迭代后,通过图形的适当API删除它们。

好的,我在谷歌上搜索了一下,显然您正在使用JGraphT库。(Protip:这有助于在你的问题中明确这一点!)报告说:

返回此图中包含的一组边。该集已备份 通过图形,因此对图形的更改将反映在集合中 当对集合进行迭代时,图形被修改 迭代的结果未定义

现在,这只是意味着如果
图形的边发生了变化,那么这些变化可以在返回的
集合中看到。不幸的是,它没有说明返回的
集合中的变化会导致
图形的边发生变化。看到您得到了
不支持操作异常
,我假设
图形
不允许您更改返回的
。确认此假设:

/**
 * @see Graph#edgeSet()
 */
public Set<E> edgeSet()
{
    if (unmodifiableEdgeSet == null) {
        unmodifiableEdgeSet = Collections.unmodifiableSet(edgeMap.keySet());
    }

    return unmodifiableEdgeSet;
}

好的,我在谷歌上搜索了一下,很明显你正在使用JGraphT库。(Protip:这有助于在你的问题中明确这一点!)上面说:

返回此图中包含的一组边。该集已备份 通过图形,因此对图形的更改将反映在集合中 当对集合进行迭代时,图形被修改 迭代的结果未定义

现在,这只是意味着如果
图形的边发生了变化,那么这些变化可以在返回的
集合中看到。不幸的是,它没有说明返回的
集合中的变化会导致
图形的边发生变化。看到您得到了
不支持操作异常
,我假设
图形
不允许您更改返回的
。确认此假设:

/**
 * @see Graph#edgeSet()
 */
public Set<E> edgeSet()
{
    if (unmodifiableEdgeSet == null) {
        unmodifiableEdgeSet = Collections.unmodifiableSet(edgeMap.keySet());
    }

    return unmodifiableEdgeSet;
}

好的,我在谷歌上搜索了一下,很明显你正在使用JGraphT库。(Protip:这有助于在你的问题中明确这一点!)上面说:

返回此图中包含的一组边。该集已备份 通过图形,因此对图形的更改将反映在集合中 当对集合进行迭代时,图形被修改 迭代的结果未定义

现在,这只是意味着如果
图形的边发生了变化,那么这些变化可以在返回的
集合中看到。不幸的是,它没有说明返回的
集合中的变化会导致
图形的边发生变化。看到您得到了
不支持操作异常
,我假设
图形
不允许您更改返回的
。确认此假设:

/**
 * @see Graph#edgeSet()
 */
public Set<E> edgeSet()
{
    if (unmodifiableEdgeSet == null) {
        unmodifiableEdgeSet = Collections.unmodifiableSet(edgeMap.keySet());
    }

    return unmodifiableEdgeSet;
}

好的,我在谷歌上搜索了一下,很明显你正在使用JGraphT库。(Protip:这有助于在你的问题中明确这一点!)上面说:

返回此图中包含的一组边。该集已备份 通过图形,因此对图形的更改将反映在集合中 当对集合进行迭代时,图形被修改 迭代的结果未定义

现在,这仅仅意味着如果
图形的边发生了变化,那么这些变化可以在返回的
集合中看到