Iterator与Collection与ArrayList

初学者,刚学到这里.....Collectionc=newArrayList();c.add("林青霞");既然c.iterator()返回是实现Iterator接口的子... 初学者,刚学到这里.....
Collection c = new ArrayList();
c.add("林青霞");
既然c.iterator() 返回是实现Iterator接口的子类对象
那么我直接调用子类对象的 hasNext(),为何不行呢
Iterator it = c.iterator();
这里将子类对象引用给Iterator有什么特别的意思吗
while (c.iterator().hasNext()) {
String s = (String) c.iterator().next();
System.out.println(s);
}
展开
 我来答
Lindark__
2015-09-22 · 超过21用户采纳过TA的回答
知道答主
回答量:54
采纳率:100%
帮助的人:24.5万
展开全部
返回的是实现了Iterator<E>接口的Class Itr的子类而不是Collection的子类吧。

或者你去看一下Collection的源文件,应该就明白了。
追问
我感觉是
如果不给一个固定的引用it ,返回的匿名对象每次都是一个随机的新引用?
追答

确实如你所说,每次都是一个新的Iterator。在你调用c.iterator()的时候调用下面方法获得Iterator,所以每次都是新的。(来自于java.util.ArrayList.class)

 public Iterator<E> iterator() {
        return new Itr();
    }

其实是不是每次都是新的你可以自己测试一下

it1=c.iterator();
it2=c.iterator();
if(it1==it2){//看看两个引用的地址是否相同
//某输出
};
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式