黑马程序员技术交流社区

标题: ArrayList中迭代器问题 [打印本页]

作者: 王璐    时间: 2012-6-18 09:41
标题: ArrayList中迭代器问题
本帖最后由 王璐 于 2012-6-18 14:34 编辑

ArrayList al=new ArrayList();
al.add("java1");
Iterator it= al.iterator();


Iterator it= al.iterator();这条语句是什么意思?能解释一下iterator()的返回类型吗?
作者: 龙秋地    时间: 2012-6-18 09:46
  1. Iterator it= al.iterator();这条语句是什么意思?能解释一下iterator()的返回类型吗?
复制代码
这条语句的意思是:通过创建的ArrayList类的对象生成一个迭代器,用来获取ArrayList中的元素.
iterator()的返回值类型是是Iterator接口类型.
作者: 孙峰    时间: 2012-6-18 09:49
楼主应该查询API,先在ArrayList里找,发现没有这个iterator方法,那么就在其父类中找,  你会发现在其父类:AbstractList中有方法:iterator(),返回类型是Iterator,          原句::   "ListIterator<E> listIterator()           返回此列表中的元素的迭代器(按适当顺序)。 "
作者: 黑马—陈磊    时间: 2012-6-18 09:50
Iterator(迭代器),用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。
作者: 常佳杰    时间: 2012-6-18 10:31
Iterator it= al.iterator();这条语句通俗的说也就是查看(或理解为找出)
ArrayList中al的对象中的元素.....
至于iterator的返回类型应该是(你通过add方法加进去的是什么类型返回的就是什么类型)数组中的类型,
对于哥们的这个应该是返回String......
作者: 胡卿    时间: 2012-6-18 10:46
调用Array中iterator()方法,该方法返回值类型为接口类型
该方法创建了一个迭代器,用于操作集合中的元素
作者: 曾祥彬    时间: 2012-6-18 11:54
Iterator it= al.iterator();
这句话的意思可以通俗的理解为:
把al集合对象里面的存放的对象放到一条传送带的一端,然后对象就可以一个一个的从一端流向另外一端(相当于一个一个的拿出来使用)

至于说iterator()的返回类型,要看你放进去的是什么类型的对象了
1、如果用了泛型,如下
  1. ArrayList<String> al=new ArrayList<String>();
  2. al.add("java1");
  3. Iterator<String> it= al.iterator();
复制代码
那么拿出来的时候就是什么类型,不用强制转换
2、如果没有使用泛型,就像你写的,你每拿出一个对象就要强制类型转换一次。如下
  1. ArrayList al=new ArrayList();
  2. al.add("java1");
  3. Iterator it= al.iterator();
  4. // 像这样
  5. String o = (String)it.next();
复制代码

作者: 李海晓    时间: 2012-6-18 12:05
不同的容器有不同的遍历方法,根据数据存储的原理不同(如ArrayList底层用数组实现 , TreeSet用二叉树),遍历的方法就不同,
为了统一,所以这些容器继承了Iterator接口,各自不同的实现了里面的方法。
Iterator it = list.iterator();,调用不同容器的iterator方法返回一个Iterator对象,
从而可以使用it.next() 方法在不同类型集合得到想要的对象。
作者: 胡大强    时间: 2012-6-18 12:05
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。Iterator对已集合类中的任何一个实现类,都可以返回这样一个Iterator对象,譬如
ArrayList al=new ArrayList();
al.add("java1");
Iterator it = al.iterator();    //获得List对象的迭代器,然后通过迭代器来遍历List对象内保存的元素。
迭代的时候可以这样while( it .hasNext() ){ //做一些处理,比如 System.out.print( it。next );}
作者: 杨朔    时间: 2012-6-18 12:09
迭代器是一个对象,它的工作室遍历并选择序列中的对象进行操作,它的返回类型是Iterator,集合通过迭代器
来获取元素。
作者: 黄连兵    时间: 2012-6-18 13:16
Iterator it= al.iterator();
楼主可能是觉得迭代器比较抽象,不好理解吧!
这个语句的含义,楼上各位讲的都很靠谱了~!
我常常这么理解:双色球摇奖的那个大箱子好比是个集合,里面放了很多个球,是对象。现在开始摇奖了,于是开了个口子,一次出来一个球。我们就去处理这个球,球一个一个的排着队从出口取出来......
迭代器就好比这个出口。




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