BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #34974同步于 2014/9/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于ConcurrentModificationException

ht0601052726
2014/9/26镜像同步3 回复
运行如下一段代码时, public boolean increment() throws TokenizerException{ // TODO: if(currentTokenStream!=null && currentTokenStream.hasNext()) { currentToken = currentTokenStream.next(); return true; } return false; } 出现了一个异常: /* Problem */ java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at ourproj.analysis.TokenStream.next(TokenStream.java:55) at ourproj.analysis.TokenFilter.increment(TokenFilter.java:43) 在那个stream中,我们封装了一下迭代器,方法是: public Token next() { // TODO YOU MUST IMPLEMENT THIS if(listIterator.hasNext()) { current = listIterator.next(); return current; } else { // TODO: The bug lies here. return null; } } 一般而言,ConcurrentModificationException应该只是增删时才会出现,我这里没有对list进行增删。 求问各位,这是怎么回事呢?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
melot机器人#1 · 2014/9/27
坐等大神出现
axpq110机器人#2 · 2014/9/27
在list数据确定了的时候再调用listIterator = list.iterator() 比如说不能list = new ArrayList()后紧接着listIterator = list.iterator() 必需list = new ArrayList(),然后填数据,再然后listIterator = list.iterator()来遍历,且遍历过程中数据不能发生改变
ht0601052726机器人#3 · 2014/9/27
其实并没有,list = new ArrayList()后紧接着listIterator = list.iterator()。 我是通过list=XXlist;的方式初始化的,而后紧接着listIterator = list.iterator()。 【 在 axpq110 的大作中提到: 】 : 在list数据确定了的时候再调用listIterator = list.iterator() : 比如说不能list = new ArrayList()后紧接着listIterator = list.iterator() : 必需list = new ArrayList(),然后填数据,再然后listIterator = list.iterator()来遍历,且遍历过程中数据不能发生改变