<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent

    Vicent's blog
    隨筆 - 74, 文章 - 0, 評論 - 5, 引用 - 0
    數(shù)據(jù)加載中……

    For-Each 循環(huán)

    管中窺虎

    在學習 java 1.5 的過程中,我使用了 sun 公布的 tutorial ,這份文檔寫的比較詳盡易明,但是對于想快速了解 tiger 而且具有較好 java 基礎的人來說,大篇幅的英文文檔是比較耗時間和非必需的,所以我將會歸納這份文檔的主要內(nèi)容,在保證理解的底線上,盡力減少閱讀者需要的時間。

    ?

    在以下地址可以進入各新增語言特色介紹以及下載相關(guān)文檔(若有)。

    http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html

    ?

    第二道虎紋: For-Each 循環(huán)

    目前在一個容器里做迭代訪問挺郁悶的,看看下面這個方法,方法的目的是把容器里的一系列計時任務取消。

    void ?cancelAll(Collection < TimerTask > ?c)? {

    ????
    for ?(Iterator < TimerTask > ?i? = ?c.iterator();?i.hasNext();?)

    ????????i.next().cancel();

    }

    關(guān)于

    Iterator 的部分真的很羅嗦,而且容易出錯。現(xiàn)在再看看 1.5 里帶來的 For-each 循環(huán):

    void ?cancelAll(Collection < TimerTask > ?c)?{

    ????
    for ?(TimerTask?t?:?c)

    ????????t.cancel();

    }

    這個新的循環(huán)和泛型完美配合,既保持類型安全,又去掉了冗余。

    以下是一個在試圖嵌套迭代的時候經(jīng)常會犯的錯誤。

    List?suits? = ?;

    List?ranks?
    = ?;

    List?sortedDeck?
    = ? new ?ArrayList();

    ?

    // ?BROKEN?-?throws?NoSuchElementException!

    for ?(Iterator?i? = ?suits.iterator();?i.hasNext();?)

    ????
    for ?(Iterator?j? = ?ranks.iterator();?j.hasNext();?)

    ????????sortedDeck.add(
    new ?Card(i.next(),?j.next()));

    ?

    原因是 i.next() 被過多的調(diào)用了。

    再看看新循環(huán)的表現(xiàn),簡直是度身定造一樣的般配。

    for ?(Suit?suit?:?suits)

    ????
    for ?(Rank?rank?:?ranks)

    ????????sortedDeck.add(
    new ?Card(suit,?rank));

    ?

    for-each 循環(huán)也適用于數(shù)組,象隱藏迭代子一樣,這次它把數(shù)組下標藏起來了。

    // ?Returns?the?sum?of?the?elements?of?a

    int ?sum( int []?a)? {

    ????
    int ?result? = ? 0 ;

    ????
    for ?( int ?i?:?a)

    ????????result?
    += ?i;

    ????
    return ?result;

    }

    ?

    那么我們什么時候該用 for-each 循環(huán)呢?只要情況運行就應該用,它真的讓你的代碼好看了很多。不幸的是,它有不能發(fā)揮作用的情形,就是需要用 iterator remove 方法的時候,因為 iterator 被隱藏了,你也無法調(diào)用它的方法了,新的循環(huán)不適用于過濾元素。同樣的也不適用于需要把數(shù)組中的元素替換掉的情況。最后,它也不能在平行遍歷多個容器的情況里使用,這些缺點,設計者是知道的,但是最后他們明智地選擇這樣一個簡單的,能適用于多數(shù)情況的設計方案

    posted on 2006-08-22 11:20 Binary 閱讀(189) 評論(0)  編輯  收藏 所屬分類: j2se

    主站蜘蛛池模板: 成人激情免费视频| 永久免费AV无码国产网站| 亚洲精品无码AV中文字幕电影网站| 亚洲综合校园春色| **一级毛片免费完整视| 亚洲高清免费在线观看| 免费成人激情视频| 亚洲日本乱码一区二区在线二产线| 最近的中文字幕大全免费8| 久久久亚洲裙底偷窥综合| 性xxxxx免费视频播放| 亚洲偷偷自拍高清| 国产色婷婷精品免费视频| 水蜜桃视频在线观看免费| 国产亚洲精品线观看动态图| 青青操免费在线观看| 亚洲欧洲国产日韩精品| 57PAO成人国产永久免费视频| 亚洲综合无码一区二区痴汉| 精品久久久久久久免费人妻 | 噜噜噜亚洲色成人网站| 亚洲精品456播放| 日本高清免费观看| 亚洲国产精品张柏芝在线观看| 最近2019中文字幕mv免费看| 高潮毛片无遮挡高清免费| 亚洲AV无码一区二区二三区软件| 亚洲电影免费观看| 美女啪啪网站又黄又免费| 亚洲av色福利天堂| 处破痛哭A√18成年片免费| 男女作爱免费网站| 97se亚洲综合在线| 免费观看日本污污ww网站一区| 久久成人永久免费播放| 亚洲精品中文字幕无码AV| 五月婷婷亚洲综合| 51在线视频免费观看视频| 免费无码国产在线观国内自拍中文字幕 | 91成人免费观看在线观看| 久久久亚洲AV波多野结衣|