幻境
          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 閱讀(1319) 評論(1)  編輯  收藏 所屬分類: 編程相關

          FeedBack:
          # re: J2SE5.0新特性示例---循環語句的增強
          2005-05-14 11:46 | idior
          哈哈 學別人的
          不過沒.net學的快  回復  更多評論
            
          主站蜘蛛池模板: 乌兰察布市| 绥宁县| 疏勒县| 五寨县| 东安县| 长海县| 湖口县| 沂水县| 平远县| 织金县| 保康县| 吉安市| 湖口县| 静乐县| 鹿泉市| 凯里市| 保康县| 平舆县| 建平县| 景泰县| 荆州市| 涿鹿县| 五莲县| 白河县| 奉化市| 宣威市| 南宫市| 武宁县| 深泽县| 普陀区| 申扎县| 襄汾县| 塔河县| 齐河县| 怀化市| 咸宁市| 和平县| 贵州省| 仁怀市| 望城县| 武宁县|