遍历list元素,用iterator() ,再while(hasNext()),next()有什么好处吗

crowgns 2008-07-22 04:29:07
看老大的代码需要取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);

}
有什么优点吗?
...全文
64350 66 打赏 收藏 转发到动态 举报
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
NiklausXu 2012-09-29
  • 打赏
  • 举报
回复
linklist增删时只需将n的前后节点相连,把n置为null即可,而arrayList增删时在先找到m元素将它删除,还要向前移动n-m-1个元素。
但是当linklist元素很多又没有索引的情况下使用linklist是不合理的。因为调用linklist.remove(Object)是很慢的,最坏的在m-1次。如果在有索引可用的情况下使用linklist.remove(int):它是先判断要删除的索引下标在链表的前半、后半部分,如果在前半部就从链表的前面开始查找,在后半部分则从后面开始查找。
NiklausXu 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 的回复:]

用iterator迭代属于面向对象编程。更加符合JAVA本身。

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

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



------------
c,c++,数据结构没及格学生……
[/Quote]


难怪你及不鸟格


shenshengzhiwen 2012-09-12
  • 打赏
  • 举报
回复
帽子说的还是不错的哈。
fanli586 2012-02-09
  • 打赏
  • 举报
回复
太牛了,我是来学习的
GSD159 2011-10-15
  • 打赏
  • 举报
回复
mark
btloveet 2011-08-05
  • 打赏
  • 举报
回复
.....................犀利!
jiangxufang 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 contra_wind 的回复:]
上面说反了
应该是:
LinkedList,是以链表为基础实现,链表便于顺序访问。在操作的时候,查慢改快。ArrayList,顾名思义,以数组方式实现,便与随机访问, 查快改慢。
[/Quote]


同意你的观点
xunzhaofenghua 2010-12-14
  • 打赏
  • 举报
回复
先mark,很好!
love_future 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 m_song 的回复:]
真的!

如果List为ArrayList时,这两种方式遍历差别就不大!

如果是LinkedList,反而推荐使用for!
[/Quote]

LinkedList当数据很多的时候你用get试试看,鄙视
bayerntor 2010-06-27
  • 打赏
  • 举报
回复
好贴,学习~~
zuoshouaini 2010-06-22
  • 打赏
  • 举报
回复
学习了
thriller_zw 2010-02-02
  • 打赏
  • 举报
回复
顶一个
chuxu000 2009-12-02
  • 打赏
  • 举报
回复
学习了一次,顶一下
taizhoufox 2009-10-16
  • 打赏
  • 举报
回复
好贴,标记一下。。
jnzw1986 2009-10-14
  • 打赏
  • 举报
回复
领教了。。
my0024 2009-07-30
  • 打赏
  • 举报
回复
路过读读 学习ing
lovetysx 2009-06-28
  • 打赏
  • 举报
回复
明白了,标记一个!
  • 打赏
  • 举报
回复
lz加错分了。。。。
脸红ING
crowgns 2008-07-23
  • 打赏
  • 举报
回复
我搞清楚了,现在在gwt做界面,只支持jdk1.4
[Quote=引用 37 楼 alloyer 的回复:]
上面两个都不怎么样,应该使用下面的形式:
List <String> arraylist = new ArrayList <String>();
for (String str:arraylist) {
System.out.println(str);
}

这做到了最好的封装性.
[/Quote]
crowgns 2008-07-23
  • 打赏
  • 举报
回复
我都不好意思60分了,我要加分....
加载更多回复(44)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧