[J2SE 5.0专题][2.2]增强的for循环

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

你是否已经厌倦了每次写for循环时都要写上那些机械的代码,尤其当你需要遍历数组或者Collection,如:

public void showAll (Collection c) {

for (Iterator iter = c.iterator(); iter.hasNext(); ) {

System.out.println(iter.next().toString());

}

}

public void showAll (String[] sa) {

for (int i = 0; i < sa.length; i++) {

System.out.println(sa[i]);

}

}

这样的代码不仅显得臃肿,而且容易出错,(想想看如果我们不小心忘记移动iterator或者下标,又或者在循环体内不小心移动了下标,可能更糟:在循环体内做了逻辑判断,而进一步影响到下标或者iterator的位置,类似的例子可以举出很多。)为什么不能让编译器帮我们处理呢?在5.0中,我们可以这样写:

public void showAll (Collection c) {

for (Object obj : c) {

System.out.println(obj.toString());

}

}

public void showAll (String[] sa) {

for (String str : sa) {

System.out.println(str);

}

}

这样的代码显得更加清晰和简洁,不是吗?(是不是有点像C#的foreach?)加上泛型,我们甚至可以把第一个方法变得更加漂亮:

public void showAll (Collection<String> c) {

for (String str : c) {

System.out.println(str);

}

}

有了泛型和增强的for循环,我们在大多数情况下已经不用去操心那些烦人的for循环的表达式和嵌套了。如下情况例外:当你需要在循环体中访问iterator和下标时,比如当你需要去除或者修改集合或数组中的元素。

有关增强的for循环更详细的内容,参考这里

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有