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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-16 18:33  /  963 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-16 19:24 编辑

iterator()和listiterator()的区别?和使用情况

3 个回复

倒序浏览
毕老师的视频讲的很清楚啊
1.ListIterator是list独有的迭代器。
2.ListIterator可以在迭代的过程中进行删除和添加数据,而Iterator这个迭代器在迭代的时候删除或添加数据会报异常。
异常的原因是,迭代器和集合的引用使用的是同一数据,你即在进行next()操作,又使用集合对象进行add操作,会出现安全隐患
毕老师在集合list的视频里有借讲的很明白,如果我说的你看不懂,你可以翻翻视频
回复 使用道具 举报
list集合中有特有的迭代器,。是iterator的子接口。因为iterator只有3个方法,hasnext,next,remove.因为iterator跟集合操作的元素相同,不能同时用迭代器和集合操作同一个元素,即并发访问。有安全隐患,所以一般在迭代器中只调用迭代器的方法,否则产生安全隐患。但是iterator中只能遍历和移除。在迭代时,因为不可以用集合的方法操作元素,操作有局限性,所以实现iterator接口定义个功能更多的迭代器。. listIterator,还可以逆向遍历hasprevious,previous。反正就是这个迭代器方法比iterator中方法多了许多,可以逆向遍历,删除,添加什么的都行,你可以看看api中的listiterator有什么方法。
回复 使用道具 举报
我今天也看到集合这块了。。也发蒙。。
但是据我自己了解的应该是:
iterator是从listiterator 当中提取出来的精华,是它的父接口。
iterator是任何集合类当中都有的迭代器接口,即所有的集合类当中都能使用iterator当中规定的方法。
而listiterator迭代器必须只能在集合中list规则下的子类创建使用。

使用情况就是,因为iterator是从listiterator 当中提取出来,所以iterator当中的方法比listiterator少很多,只有3个方法,因为它是所有迭代器的最共性方法。

最简单的说法是,你如果能用listiterator的迭代器就可以免费使用iterator当中的方法。但是你能使用iterator的迭代器不一定能使用listiterator当中的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马