java.util.ConcurrentModificationException

来源:百度知道 编辑:UC知道 时间:2024/05/25 20:45:01
public void removeState(State s) {
Iterator<Transition> i = allTransitions.iterator();
while(i.hasNext()){
Transition t = (Transition)i.next();//这里报错
if(t.toState().equals(s)||t.fromState().equals(s)){allTransitions.remove(t);
}
}
}
不是 这个是遍历时迭代对象改变了造成的
我刚才看了http://blog.163.com/iamandyfan/blog/static/18591253200942105512685/
不过还是不太确定怎么改
是把if(t.toState().equals(s)||t.fromState().equals(s)) {allTransitions.remove(t); }
改成if(t.toState().equals(s)||t.fromState().equals(s)) {i.remove( ); }吗?
这样allTransitions里面的t真的被删掉了吗?

对,iterator在执行remove方法删除allTransitions里面的对象的时候会调用allTransitions.remove(t);来删除。所以就没有问题,然后关于为什么会抛出上面的异常,上面的blog已经讲的很清楚了。