【发布时间】:2013-11-26 05:02:41
【问题描述】:
尽管使用了带有堆栈的迭代器,但我遇到了并发修改异常
package samplecodes;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class ReOrderStack {
public static Stack<Integer> reorder(Stack<Integer> s )
{
Queue <Integer> q= new LinkedList<Integer>();
if(s==null|| s.isEmpty())
return s;
// Use an iterator to prevent concurrent modification exception!
Iterator<Integer> it = s.iterator();
while(it.hasNext())
{
Integer val= it.next();// concurrent modification exception!
if(val>=0)
{
s.remove(val);
q.add(val);
}
}
//we've inspected the stack
//add back from the queue to stack
while(!q.isEmpty())
{
Integer val=q.remove();
s.push(val);
}
return s;
}
}
有什么想法吗?
【问题讨论】:
-
您必须通过迭代器进行删除。
标签: java collections iterator stack