java Iterator

等牛奶的咖啡 发布于 2011/07/04 10:57
阅读 1K+
收藏 0
今天看到一段代码,
for (Iterator<ObjectDO> ite = objectList.iterator(); ite.hasNext();) {
       ...................
}

不明白为什么不写成

Iterator<ObjectDO> ite = objectList.iterator();
while(ite.hasNext()){
        ...............
}

问了主管,说这样写不好,但也没说哪里不好,好疑惑...............

 

 

加载中
0
crane_may
crane_may

估计就是ite的空间问题

如果一个函数里有两个循环

用你的方法第二个ite就需要变成ite2之类的,不然重复定义

而第一种不会有问题

0
hantsy
hantsy
for 和  while 循环,。。。。
0
红薯
红薯
习惯问题,我觉得没什么不好
0
等牛奶的咖啡
等牛奶的咖啡
我也觉得没啥区别,纯粹个人爱好问题
0
Hongbin Wang
Hongbin Wang

Minimize the scope of local variables and prefer for loops to while loops.

Iterator<Element> i = c.iterator();
while (i.hasNext()) {
      doSth(i.next());
}

Iterator<Element> i2 = c2.iterator();
while (i.hasNext()) {       // bug!!
      doSth(i2.next());
}

使用while循环在粗心的情况下,就会出现上面的隐藏的bug。 这种bug比较危险,no compile error, no runtime error. 所以说 for 优先 while,这是一个良好的编码习惯。就像我们经常用 "".equals(obj),而不是 obj.equals("")。

0
戴威
戴威
少写一行代码
0
lxbzmy
lxbzmy
eclipse有模板支持第一种写法,所以第一种少用花点时间写吧?
0
芙蓉镇
芙蓉镇

jdk1.5以后也可以简单写成这样了

for(ObjectDO dao : objectList) {

}

0
a
ahong222

第一种方法ite的生命周期只在for循环中

第二种方法的生命周期在整个方法或者代码块中,所以第一种要好些

返回顶部
顶部