日期:2014-05-20  浏览次数:20724 次

遍历list元素,用iterator() ,再while(hasNext()),next()有什么好处吗
看老大的代码需要取list里面每个元素的时候,都是
  Iterator it = list.iterator();
  while (it.hasNext()) {
  personnelID= (String) it.next();
  }

这样比我直接写for(int i=0;i<list.size();i++){
  personnelId=(String)list.get(i);

}
有什么优点吗?


------解决方案--------------------
itertor即枚举器,枚举器是Java在后台自动排序好,比纯粹的for循环要快,因为如果用 for循环,也需要将List中的对象依次取出,这样对内存的调用是随机的,不如Iterator。


 


------解决方案--------------------
探讨
引用:
itertor即枚举器,枚举器是Java在后台自动排序好,比纯粹的for循环要快,因为如果用 for循环,也需要将List中的对象依次取出,这样对内存的调用是随机的,不如Iterator。


真的?

------解决方案--------------------
引用楼主 crowgns 的帖子:
看老大的代码需要取list里面每个元素的时候,都是
Iterator it = list.iterator();
while (it.hasNext()) {
personnelID= (String) it.next();
}

这样比我直接写for(int i=0;i <list.size();i++){
personnelId=(String)list.get(i);

}
有什么优点吗?

------解决方案--------------------
探讨
引用:
就是arrayList,所以我可以继续我的for了?

还是建议你使用iterator!
原因,我说了,然后楼上也有兄弟补充了!
有兴趣,你可以看看jvm相关的!

------解决方案--------------------
帽子太强大了。。
------解决方案--------------------
用iterator迭代属于面向对象编程。更加符合JAVA本身。

另外学过数据结构的都应该了解LinkedList,是以链表为基础实现,链表便于顺序访问。在操作的时候,查快改慢。
ArrayList,顾名思义,以数组方式实现,便与随机访问,查慢改快。

foreach内部实现原理也是迭代,但不方便单个数据的修改。



------------
c,c++,数据结构没及格学生留。
------解决方案--------------------
最好的做法
List <String> list = new ArrayList <String>(); 
for (String s:list) { 
System.out.println(s); 


Iterator it = list.iterator(); 这样的用法一般在jdk 1.5以前使用。