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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金兴 中级黑马   /  2012-4-8 16:18  /  2099 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1:
Iterator it = a.iterator();
while(it.hasNext())
{
   it.next();
}

2::
for(Iterator it = a.iterator ; it.hasNet())
{
   it.next();
}
这两种方法对集合进行迭代,哪个效率更高啊 ?为什么呢?

5 个回复

倒序浏览
增强for循环
回复 使用道具 举报
对于声明了RandomAccessList(ArrayList有,LinkedList没有)来说,for稍高于iterator
但是对于没有声明的,则iterator远远高于for


回复 使用道具 举报
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();
}
回复 使用道具 举报
高级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来进行遍历了。

回复 使用道具 举报
在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于汉廷的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲;但现在,我才知道我有多么浅薄!  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马