黑马程序员技术交流社区

标题: Iterator接口在什么情况下可以使用? [打印本页]

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


作者: 史龙贤    时间: 2012-9-18 16:52
Iterator接口用途是把集合中元素的内容按序排列取出后,可一个个读取
经常会用到一下几个方法:
hasNext-如果仍有元素可以迭代,返回true
next-返回迭代的下一个元素
remove-从迭代器指向的集合中移除迭代器返回的最后一个元素
例如:
Iteratoriterator=list.iterator();
while(iterator.hasNext()){
Objecto=iterator.next();
}

作者: 刘进朝    时间: 2012-9-18 16:54
武庆东 发表于 2012-9-18 16:51
Iterator接口是java空间框架的成员,但它与Collection系列、Map系列的集合不一样。
Collection系列集合、ma ...

哦哦。你是从什么时候开始学习java的啊?
作者: 程金    时间: 2012-9-18 17:05
本帖最后由 程金 于 2012-9-18 17:16 编辑

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

好好学习,多多练习,一定可以的~ !不要去比较,只要坚持下去一定可以的哈~!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2