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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵家阳 中级黑马   /  2012-11-23 16:32  /  1405 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵家阳 于 2012-11-24 18:16 编辑

什么是迭代器?。。。求详解!。。。
Iterator和ListIterator又是怎么回事?。。。求详解!。。。。求精解!。。。。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

5 个回复

正序浏览
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仅能遍历,不能修改。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
一、迭代器是为访问容器如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-24 18:18

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Iterator其实就是集合的取出元素的方式、如同抓娃娃游戏机中的夹子。
ListIterator是Iterator的子接口,是List集合的特有的迭代器,Iterator只能对元素进行判断、取出、删除的操作,如果想要其他的操作如 添加、修改等,就需要使用其子接口 ListIterator

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马