我有一个for循环
for (int neighbour : neighbours) {
我可以在循环内修改
neighbours
的位置。发现多数民众赞成在ConcurrentModificationException
的原因。并从https://stackoverflow.com/a/8189527/292291中读取因此,如果您要修改列表(或一般的任何集合),
使用迭代器,因为这样它就知道了修改,因此
这些将得到妥善处理。
所以我尝试了:
neighboursItr = neighbours.iterator();
while (neighboursItr.hasNext()) {
// try disconnecting vertices
neighbour = neighboursItr.next();
但这并不能解决问题。为什么?
最佳答案
您在打电话给neightbours.remove(neighbour)
吗?在那种情况下,那就是问题。您需要改为调用neightboursItr.remove()
。