zhongqing的 个人空间.

学习的乐趣

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

循环语句的增强

之前类似这样的语句:

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));

 

 

这段代码是不是很漂亮?

posted on 2005-05-13 16:17  zhongqing的 个人空间.  阅读(305)  评论(0编辑  收藏  举报