幻境
          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學的快  回復  更多評論
            
          主站蜘蛛池模板: 辉县市| 抚宁县| 三门县| 南涧| 贡觉县| 伊吾县| 夏河县| 九江县| 理塘县| 新竹县| 武平县| 邹平县| 固始县| 师宗县| 潼南县| 新田县| 安远县| 林甸县| 法库县| 晋城| 秀山| 湟源县| 小金县| 太和县| 历史| 元阳县| 昌乐县| 积石山| 渝北区| 肃宁县| 红安县| 木里| 浦东新区| 云林县| 邵武市| 蓬安县| 塔城市| 石林| 平定县| 高安市| 聊城市|