锁定老帖子 主题:Iterator使用的大陷阱
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-22
今天在使用Iterator的时候被一个问题困扰了很久,最后通过一步步的找错终于找出了错误,原因是忽视了一个小问题,现在先来说一下我的操作: while(it.hasNext()){ Map<String,Object> product=it.next() ; if(product.containsKey("pid")){ int value=Integer.parseInt(String.valueOf(product.get("pid"))); if(value==pid){ shoppingList.remove(it.next() ); } } } 这是我的代码,相信大家都可以看懂了,但是奇怪的是运行这段代码以后,总是报
next E next() Returns the next element in the iteration. Returns: the next element in the iteration. Throws: NoSuchElementException - iteration has no more elements. 现在应该知道问题的所在了吧,第一个it.next()后再去it.next()就不是原来想要的了,也就是说it.next()后这个it就指向了下一个对象,所以第二个it.next() 应该换成product,对于Iterator处理,建议新建一个变量保存it.next()的值,后面就直接对这个值操作就行了。
<!-- Generated by javadoc (build 1.6.0) on Wed Nov 29 02:21:55 PST 2006 --> <noscript></noscript>声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-22
Orz.......
这种低级错误也敢贴出来........ |
|
返回顶楼 | |
发表时间:2011-02-22
确实是低级错误
|
|
返回顶楼 | |
发表时间:2011-02-22
自己的错误,不要归咎于Iterator
|
|
返回顶楼 | |
发表时间:2011-02-22
你在一个{}里调了两次 it.next()
|
|
返回顶楼 | |
发表时间:2011-02-22
楼主太逗了
|
|
返回顶楼 | |
发表时间:2011-02-22
我还以为楼主要说的是同时对一容器进行迭代和删除操作
|
|
返回顶楼 | |
发表时间:2011-02-22
楼主自己要注意。。。。。
|
|
返回顶楼 | |
发表时间:2011-02-22
大陷进啊,晕!
|
|
返回顶楼 | |
发表时间:2011-02-22
LZ,这个问题就像我今天才知道原来首都机场在北京一样!
|
|
返回顶楼 | |