我对Arraylist和迭代器非常陌生&这是我第一次遇到这个异常。我有一个ArrayList u,我想做以下算法:
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当我搜索这个异常时,我发现我不能删除数组列表上的iterms weth for each &我需要使用迭代器,但是我不知道我必须把while(iter.hasNext())放在哪里&怎么放这段代码这样的东西。如果你能帮助我,我将不胜感激。
PS。S是字符串(初始为空)&k是int
发布于 2014-11-18 03:06:07
我必须如何准确地将while(iter.hasNext())
您可以使用iterator,如下所示:
Iterator<Character> iter = u.iterator();
while(iter.hasNext())
{
Character c = iter.next();
.....
}使用泛型初始化列表:List<Character> u = new ArrayList<Character>();
提示:在适用的情况下使用iter.remove()、iter.add(),而不是u.remove()和u.add()。
你需要从这里开始:http://www.tutorialspoint.com/java/java_using_iterator.htm
发布于 2014-11-18 03:08:14
试试这个:
Iterator<Character> 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);
}}
发布于 2014-11-19 17:39:31
当您使用foreach循环时,您隐式地使用了迭代器。
当集合被“同时”修改时,除了迭代器之外,通过任何方式通过一个迭代器来修改集合,就会发生ConcurrentModificationException。
因此,使用迭代器
Iterator<Character> iter = u.iterator();
while (iter.hasNext())以防您需要修改循环中的集合。
https://stackoverflow.com/questions/26979939
复制相似问题