黑马程序员技术交流社区

标题: 关于Iterator 问题 [打印本页]

作者: 金兴    时间: 2012-4-8 16:18
标题: 关于Iterator 问题
1:
Iterator it = a.iterator();
while(it.hasNext())
{
   it.next();
}

2::
for(Iterator it = a.iterator ; it.hasNet())
{
   it.next();
}
这两种方法对集合进行迭代,哪个效率更高啊 ?为什么呢?
作者: 蒙武辉    时间: 2012-4-8 16:20
增强for循环
作者: 邓海涛    时间: 2012-4-8 16:28
对于声明了RandomAccessList(ArrayList有,LinkedList没有)来说,for稍高于iterator
但是对于没有声明的,则iterator远远高于for



作者: 贠(yun)靖    时间: 2012-4-8 16:37
Iterator it = a.iterator();
while(it.hasNext())
{
   it.next();    这个只new了一个对象   等该对象用完了 才会随着jvm的垃圾回收机制不定时的回收
}

2::
for(Iterator it = a.iterator ; it.hasNet())  
{  这个是在局部变量中new的对象 ,虽然每循环一次都重新new了一个对象  但是由于在局部,每循环一次就会释放一次,
         也就是说每次循环一次结束 进入下一次循环之前,new的it这个对象已经释放了,这就是为什么 写for循环的时候
         看似new了很多对象 而只用一个it变量就可以的原因  所以这个循环效率应该高一些的
   it.next();
}
作者: 莫运飞    时间: 2012-4-8 16:47
高级for循环:
格式:
for(数据类型 变量名:被遍历变量的集合(collection)或者数组)
{

}

for(String s:al)//只能对集合中的元素取出 不可以修改

{
System.out.prinlnt(s);//假如s="55";在这里不可以复制   不可以修改元素的值


}

这两个方法的结果一样的 for高级就是迭代器的简化

Iterator<String> it=al.iterator();
while(it.hasNext())
{
        System.out.prinlnt(it.next());

}。

高级for对集合进行遍历: 只能获取元素,不可以修改元素

迭代器出来遍历,还可以进行remove集合中元素的动作

传统for和高级for的区别:高级for有一个局限性,必须有被遍历的目标

map不支持迭代器

如果要对集合进行增删改查的话,就要用到ListIterator来进行遍历了。


作者: pray    时间: 2014-4-26 05:56
在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于汉廷的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲;但现在,我才知道我有多么浅薄!  




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