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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王洪波 中级黑马   /  2013-5-10 09:04  /  2023 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王洪波 于 2013-5-10 09:43 编辑

看完集合的视频,对Collection, Iterable, Iterator, ListIterator这几个接口的关系弄不太清,哪位大侠清楚?帮忙理下。

评分

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

查看全部评分

4 个回复

倒序浏览
Collection 是集合,如果想要获取集合中的元素就必须使用迭代器.

Iterable中有个Iterator()方法,返回的是一个迭代器.

Iterator是集合遍历时所使用的迭代器

ListIterator是List集合中特有的迭代器.   可以在迭代过程中进行修改和删除.
回复 使用道具 举报
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集合。

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
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遍历的元素所在的容器都有索引。



评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
查看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 个可能的指针位置。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马