java.util.ConcurrentModificationException&iteration?

我是Arraylists和迭代器的新手,这是我第一次遇到这个例外。 我有一个ArrayList你想我做以下算法:

for (Character c:u){ if(k==1){ //base case if(isAnswer(s+u.get(0))) System.out.println(s+u.get(0)+" is the correct sequence."+ '\n'); return; } else{ u.remove(c); puzzleSolve(k-1, s+c , u); u.add(c); removeLastChar(s); } } //end of for each 

当我搜索这个exception时,我发现我无法删除每个arrayl上的iterms weth并且我需要使用迭代器,但是我很困惑我在哪里以及如何确定我必须放入while(iter.hasNext())这段代码就是这样的东西。 如果你能帮助我,我将不胜感激

PS。 s是String(最初为空)&k是int

尝试这个:

 Iterator iter = u.iterator(); while (iter.hasNext()) { Character currentChar = iter.next(); if(k==1){ //base case if(isAnswer(s+u.get(0))) System.out.println(s+u.get(0)+" is the correct sequence."+ '\n'); return; } else{ iter.remove(); puzzleSolve(k-1, s+currentChar , u); u.add(currentChar); removeLastChar(s); } 

}

我究竟必须把它放在哪里(iter.hasNext())

您可以使用iterator ,如下所示:

 Iterator iter = u.iterator(); while(iter.hasNext()) { Character c = iter.next(); ..... } 

使用generics初始化列表: List u = new ArrayList();

提示 :在适用的地方使用iter.remove()iter.add()而不是u.remove()u.add()

您需要从这里开始: http : //www.tutorialspoint.com/java/java_using_iterator.htm

当您使用foreach循环时,您将隐式使用迭代器

当通过迭代器以任何方式通过集合时“同时”修改集合时发生ConcurrentModificationException ,迭代器除外。

所以,使用迭代器

 Iterator iter = u.iterator(); while (iter.hasNext()) 

如果你需要在循环中修改集合。