循環(huán)語(yǔ)句的增強(qiáng)
之前類似這樣的語(yǔ)句:
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
} |
以后可以這樣寫(xiě):
void cancelAll(Collection c) {
for (Object o : c)
((TimerTask)o).cancel();
} |
有時(shí)候我們可能寫(xiě)出這樣的代碼:
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())); |
這段代碼不會(huì)按照我們?cè)O(shè)想的那么工作,因?yàn)槊看蔚诙€(gè)for語(yǔ)句的執(zhí)行都會(huì)引發(fā)i.next()的執(zhí)行,實(shí)際上我們沒(méi)有達(dá)到對(duì)i進(jìn)行遍歷的目的,而且可能會(huì)引起一個(gè)NoSuchElementException異常。
解決的一個(gè)辦法是改寫(xiě)成如下代碼:
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語(yǔ)言的新特性,我們可以這樣寫(xiě):
for (Suit suit : suits)
for (Rank rank : ranks)
sortedDeck.add(new Card(suit, rank));
|
這段代碼是不是很漂亮?
posted on 2005-05-12 10:57
幻 閱讀(1308)
評(píng)論(1) 編輯 收藏 所屬分類:
編程相關(guān)