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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘进朝 中级黑马   /  2012-9-18 16:43  /  2532 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Iterator接口在什么情况下使用?谢谢。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 新手鼓励!

查看全部评分

7 个回复

倒序浏览
Iterator接口是java空间框架的成员,但它与Collection系列、Map系列的集合不一样。
Collection系列集合、map集合主要用于盛装其他对象,而Iteratro则主要用于遍历Collection集合中的元素,,Itrator对象也成为迭代器
Iterator迭代器采用的是快速失败(fail-fast)机制,一旦在迭代过程中检测到该集合已经修改,立即引发ConcurrentModificationException异常,而不是显示修改后的结果.
这样可以避免共享资源而引发的潜在问题。什么时候用,就看你是不是要循环操作集合进行操作!

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
Iterator接口用途是把集合中元素的内容按序排列取出后,可一个个读取
经常会用到一下几个方法:
hasNext-如果仍有元素可以迭代,返回true
next-返回迭代的下一个元素
remove-从迭代器指向的集合中移除迭代器返回的最后一个元素
例如:
Iteratoriterator=list.iterator();
while(iterator.hasNext()){
Objecto=iterator.next();
}


评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
武庆东 发表于 2012-9-18 16:51
Iterator接口是java空间框架的成员,但它与Collection系列、Map系列的集合不一样。
Collection系列集合、ma ...

哦哦。你是从什么时候开始学习java的啊?
回复 使用道具 举报
本帖最后由 程金 于 2012-9-18 17:16 编辑

你要了解接口的作用,接口就是让你直接使用而不必了解具体的实现,其次就是一套标准,所有实现了这个接口的类都提供了相同的方法,所以实现了iterator的集合对象都提供了一个iterator类,用来迭代集合对象,
在Vector中,addElement()读取对象,在list中get()读取对象等,不能通用,你编写的客户程序的迭代器因此不同,
避免具体迭代器更换给客户程序带来的修改,迭代器模式抽象了具体迭代器 角色,使得客户程序更具一般性和重用性。这被称为多态迭代。 举例由于迭代器模式本身的规定比较松散,所以具体实现也就五花八门。
在使用集合的时候,需要事先知道集合的准确类型,否则无法使用。乍看来,这一点似乎没什么关系。但假若最开始使用Vector,后来在程序中又决定(考虑执行效率的原因)改变成一个List,可利用Iterator的概念达到这个目的。它可以是一个对象,作用是遍历一系列对象,并选择那个序列中的每个对象,同时不让客户程序员知道或关注那个序列的基础结构。
回复 使用道具 举报
问题已经解决。谢谢。
回复 使用道具 举报
刘进朝 发表于 2012-9-18 16:54
哦哦。你是从什么时候开始学习java的啊?

好好学习,多多练习,一定可以的~ !不要去比较,只要坚持下去一定可以的哈~!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马