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);
} 展开
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);
} 展开
1个回答
展开全部
返回的是实现了Iterator<E>接口的Class Itr的子类而不是Collection的子类吧。
或者你去看一下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){//看看两个引用的地址是否相同
//某输出
};
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询