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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨翔 中级黑马   /  2013-3-27 00:04  /  2027 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于迭代器我的理解是  假如说有一个 集合 al 其中的元素有如下四个: java1, java2, java3, java4  如果要它们都取出的话就要像下面的代码那样用 Iterator 这个接口
  Iterator it = al.Iterator();  建立一个Iterator类型的引用it然后指向等号右边建立的对象,然后使用 对象内部的方法将集合的元素一个个取出来,在这个过程中,视频课程里面
提到了 内部类,基本上说的我也能听明白,但是自己又想了想感觉糊涂了。 我看到了内部类 实现了 Iterator接口然后 返回了一个对象,这个对象能够使用取出集合元素的方法,
但是为什么非要建立一个 Iterator类型的引用才能调用这个对象 的方法呢?其中具体是什么原理呢?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
Iterator是一个接口,只要实现了这个接口的集合就能得到这个集合的迭代器

像你上面说的举例:
List<String> list = new ArrayList();
list.add("java1");
list.add("java2");
list.add("java3");
list.add("java4");
//因为arrayList实现了iterator接口,所以list就实现了iterator接口中的所有方法,从而可以迭代集合中的元素
Iterator iter = list.iterator();
while(iter.hasNext()){
   String s = iter.next();
  System.out.println(s);
}
还有你说的返回一个对象 应该就是指迭代器!!希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问;没有的话,尽量及时将帖子分类改成【已解决】哦~
回复 使用道具 举报
本帖最后由 何衍其 于 2013-3-30 21:06 编辑

我想有两方面的原因
1,封装:因为集合中实现Iterator接口,就赋于了Iterator现实类访问集合的实例成员。通过返回内类现实的Iterator既可以隐藏对集合的访问也可以隐藏Iterator的实现
2,foreach语法的需要,因为Collection实现了可迭代接口Iterable,因而使用内部类实现Iterator是很自然的方式

foreach语法,即 for (元素:集合/数组),只要实现了Iterabler接口,就可以使用foreach语法

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

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