A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Aimer_WJY 中级黑马   /  2014-3-11 15:16  /  1659 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在对List集合迭代之后,hasNext是一直指向List集合的末尾处么?如果想进行下一次迭代怎么做?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

3 个回复

倒序浏览
hasNext一直在下一个元素那里,如果没有了下一个元素就为false了。不能进行二次迭代。你可以使用ListIterator,他有一个hasPrevious方法,可以从后往前倒着迭代。跟双向链表一样的。
回复 使用道具 举报
本帖最后由 yuon11937 于 2014-3-11 16:06 编辑

hasNext只是一个判断条件,当集合中还有元素时,这个判断条件就为真。我们不需要知道hasNext的位置,你说的应该是next的位置,一开始next处于集合第一个元素之前,每迭代一次都会往后移动一位但始终处于两个元素之间,迭代到最后一个元素时,也就位于最后一个元素后面。一旦这个集合迭代完,这个Iterator类对象也就成了垃圾,会被回收。如果还有另外一个集合要迭代,则需要重新调用iterator方法新建一个对应集合的迭代器才能进行下一个集合的迭代。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
在正序迭代完后,可以使用hasPrevious来进行逆序迭代,或者用这种方式,在for循环中定义迭代器,并在for循环中完成迭代,在结束for循环后,该迭代器便失去了作用,这样便可以再一次定义迭代器来进行正序迭代。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马