循環語句的增強
之前類似這樣的語句:
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
幻 閱讀(1317)
評論(1) 編輯 收藏 所屬分類:
編程相關