J2SE新特性---循环语句的增强

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

之前类似这样的语句:

void cancelAll(Collection c) {

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

TimerTask tt = (TimerTask) i.next();

tt.cancel();

}

}

以后可以这样写:

void cancelAll(Collection c) {

for (Object o : c)

((TimerTask)o).cancel();

}

有时候我们可能写出这样的代码:

List suits = ...;

List ranks = ...;

List sortedDeck = new ArrayList();

for (Iterator i = suits.iterator(); i.hasNext(); )

for (Iterator j = ranks.iterator(); j.hasNext(); )

sortedDeck.add(new Card(i.next(), j.next()));

这段代码不会按照我们设想的那么工作,因为每次第二个for语句的执行都会引发i.next()的执行,实际上我们没有达到对i进行遍历的目的,而且可能会引起一个NoSuchElementException异常。

解决的一个办法是改写成如下代码:

for (Iterator i = suits.iterator(); i.hasNext(); ) {

Suit suit = (Suit) i.next();

for (Iterator j = ranks.iterator(); j.hasNext(); )

sortedDeck.add(new Card(suit, j.next()));

}

利用java语言的新特性,我们可以这样写:

for (Suit suit : suits)

for (Rank rank : ranks)

sortedDeck.add(new Card(suit, rank));

这段代码是不是很漂亮?

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