幻境
We are extremely fortunate not to know precisely the kind of world we live in
posts - 22,comments - 39,trackbacks - 0

循环语句的增强

之前类似这样的语句:

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-12 10:57 阅读(1184) 评论(1)  编辑  收藏 所属分类: 编程相关

FeedBack:
# re: J2SE5.0新特性示例---循环语句的增强
2005-05-14 11:46 | idior
哈哈 学别人的
不过没.net学的快  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: