黑马程序员技术交流社区
标题:
关于集合与迭代器的关系的问题
[打印本页]
作者:
王洪波
时间:
2013-5-10 09:04
标题:
关于集合与迭代器的关系的问题
本帖最后由 王洪波 于 2013-5-10 09:43 编辑
看完集合的视频,对Collection, Iterable, Iterator, ListIterator这几个接口的关系弄不太清,哪位大侠清楚?帮忙理下。
作者:
山西_李帅
时间:
2013-5-10 09:29
Collection 是集合,如果想要获取集合中的元素就必须使用迭代器.
Iterable中有个Iterator()方法,返回的是一个迭代器.
Iterator是集合遍历时所使用的迭代器
ListIterator是List集合中特有的迭代器. 可以在迭代过程中进行修改和删除.
作者:
zms2100
时间:
2013-5-10 09:39
1、Collection : 集合,也就是List、Set集合的父类。
2、Iterator : 先谈谈迭代器这个,这是一个工具型接口,提供迭代(遍历)集合中元素的功能
出现的原因是: 在使用Collection集合(主要是其子类)时需要遍历、操作集合中的元素,因此就创造了一个这样功能的接口,而且(在JDK1.5之前)这个方法是直接创建在Collection集合的内部(内部类),但集合要使用该功能时就调用(提供的)iterator()方法,创建一个Iterator类的对象(这里用的就是私有化构造函数,但是对外提供方法能创建一个本类的对象),要使用什么功能就调用创建后Iterator类对象的方法。
3、Iterable : 这个是JDK1.5出现后的新接口,相当于是 把之前直接封装在Collection集合中创建Iterator迭代器的功能 提取出来,当你需要以后你需要使用迭代器功能的时候只需要继承这个Iterable接口,就能获得iterator()方法,而且实现该接口的类还能使用高级for循环(就是那个foreach)。
4、ListIterator : 列表迭代器,是List集合特有的迭代器,就是跟其他子父类的差不多,对父类功能的补充,只不过只能操作List集合。
总结: Collection是集合体系的顶层的接口(下面有List和Set等子类),而Iterator是一个为集合服务的工具型接口(但使用它需要调用iterator方法),Iterable接口就是从JDK1.5之后将iterator()方法封装成为一个接口,需要的就调用它; ListIterator就是Iterator的子类,但是只能用于List集合。
作者:
刘学明
时间:
2013-5-10 09:49
Iterable是java.lang包中的接口 好多类都实现了Iterable接口,这样对象就可以调用iterator()方法。 Collection就实现了这个接口。
Collection是集合层次结构中的的总接口 Collection 表示一组对象 他的子接口包括List和Set接口。
Iterator与ListIterator是有一定关系的 都是用于集合元素的取出。
Iterator与ListIterator他们两个的区别:
1.Iterator是ListIterator的父接口。
2.Iterator是Collection集合中通用的元素取出方式 对于List,Set都通用。
而ListIterator是List集合的特有取出元素方式。
3、Iterator中具备的功能只有hashNext(),next(),remove();
ListIterator中具备着对被遍历的元素进行增删改查的方法,可以对元素进行逆向遍历。
之所以如此,是因为ListIterator遍历的元素所在的容器都有索引。
作者:
long
时间:
2013-5-10 09:58
查看java的api文档可知:public interface Collection<E> extends Iterable<E>
public interface ListIterator<E> extends Iterator<E>
因此Iterable<E>与Collection<E>是父类接口与子类接口的关系,Iterator<E>与ListIterator<E>亦然。
1、Iterable<E>实现这个接口允许对象成为 "foreach" 语句的目标。
2、Collection<E>是Collection层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。
3、Iterator<E>系对 collection 进行迭代的迭代器。
4、ListIterator<E>系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2