黑马程序员技术交流社区

标题: 迭代器疑问!!! [打印本页]

作者: 赵家阳    时间: 2012-11-23 16:32
标题: 迭代器疑问!!!
本帖最后由 赵家阳 于 2012-11-24 18:16 编辑

什么是迭代器?。。。求详解!。。。
Iterator和ListIterator又是怎么回事?。。。求详解!。。。。求精解!。。。。
作者: love464646    时间: 2012-11-23 16:54
Iterator其实就是集合的取出元素的方式、如同抓娃娃游戏机中的夹子。
ListIterator是Iterator的子接口,是List集合的特有的迭代器,Iterator只能对元素进行判断、取出、删除的操作,如果想要其他的操作如 添加、修改等,就需要使用其子接口 ListIterator
作者: jerry2627    时间: 2012-11-23 16:56
Iterator和ListIterator主要区别在以下方面:

1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能

2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

4. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

作者: 段海涛    时间: 2012-11-23 16:56
一、迭代器是为访问容器如set list等提供遍历方法的一种模式,是为容器而生。
使用跌代器,你不需要干涉其遍历的过程,不需要你来提供遍历的算法,只需要通过迭代器获得你想要的数据进行处理就可以了
从而,你只管处理数据,而获取数据的事让iterator去做吧
Iterator it = list.iterator();               //获得迭代器
  while(it.hasNext())               
      {
  //填入代码 ,用 “it.next();”逐个获取你想要的list中的数据
  }


二、Iterator和ListIterator的区别
List和Set都有iterator()来取得其迭代器
但对List来说,你也可以通过listIterator()取得其迭代器
两种迭代器在有些时候是不能通用的,Iterator和ListIterator主要区别在以下方面:

1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能

2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

4. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

作者: 勾尧    时间: 2012-11-23 17:56
迭代器就是集合取出元素的一种方法。
ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中元素,会发生异常。
所以,在迭代时,只能用迭代器的方法操作元素,但Iterato方法有限,因为其只能对元素进行“判断,取出,删除”动作,不能进行其他操作如添加,修改等,此时就需要ListIterator。
具体可以看看预热视频第14天中的内容。




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