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

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

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

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評(píng)論 :: 0 Trackbacks
    使用Google Collections的理由
    Google Collections終于發(fā)布了1.0版,本文是JavaLobby上的一篇博文,作者講述了應(yīng)該使用Google Collections的若干理由,大家有興趣的話也可以體驗(yàn)一下。(2010.01.08最后更新)

    在去年底看到Google Collections發(fā)布了它的1.0版之后,我想我應(yīng)該看看與JDK默認(rèn)提供的集合框架相比,使用Google Collections類庫會(huì)有什么好處。Google Collections的發(fā)行包是一個(gè)zip文件,包含了一個(gè)jar文件,源文件和Javadoc文件。
    Java Collections API就是被用來擴(kuò)展的,而Google Collections則擴(kuò)展的很好。很快,我就發(fā)現(xiàn)該類庫最好的特性之一是它包含了MultiMap類。
    為了證明這一點(diǎn),讓我們使用一個(gè)電話薄的例子,在這個(gè)例子中每個(gè)人都可一個(gè)或多個(gè)電話號(hào)碼。事先,我已將電話號(hào)碼存入每個(gè)人的一個(gè)單獨(dú)的List中,如下所示:
    Map<Person, List<PhoneNumber>> phoneBook = new HashMap<Person, List<PhoneNumber>>();

    使用MultiMap,將變得十分簡潔:
    Multimap <Person, PhoneNumber> newPhoneBook = ArrayListMultimap.create();

    且在使用MultiMap時(shí),就沒必要管理每個(gè)人的電話號(hào)碼列表了。當(dāng)我要加一個(gè)新的電話號(hào)碼時(shí),只需這么做:
    Person me = new Person("James");
    newPhoneBook.put(me, 
    new PhoneNumber(111));
    newPhoneBook.put(me, 
    new PhoneNumber(201));

    而不是使用以前的繁冗方法去管理ArrayList:
    Person me = new Person("James");
    if(phoneBook.get(me) == null)
    {
       phoneBook.put(me, 
    new ArrayList<PhoneNumber>());
    }

    phoneBook.get(me).add(new PhoneNumber(111));
    對(duì)需要處理的數(shù)據(jù)進(jìn)行管理這個(gè)話題,Precondition允許你對(duì)傳入的參數(shù)進(jìn)行校驗(yàn)。
    Preconditions.checkNotNull(me);

    我知道在Java中達(dá)到上述效果也可使用斷言,但上述方法可使你的校驗(yàn)總是有效。你能方便地進(jìn)行校驗(yàn),通過判定一個(gè)表達(dá)式,也可為特定的參數(shù)拋出IllegalArgumentException。
    Preconditions.checkArgument((i > 0), "The value i has to be greater than zero");

    還有許多其它有用的特性,例如快速創(chuàng)建不可變集合的能力:
    ImmutableList<Integer> numbers = ImmutableList.of(12358132134);

    以前,你需要?jiǎng)?chuàng)建一個(gè)普通的List,然后再調(diào)用Collections.unmodifiableList()方法。
    為了對(duì)該類庫有一個(gè)很好的概覽,查看由Kevin Bourrillion在2008年給出的一段視頻
    總之,該類庫使你能以更優(yōu)雅的方法來處理集合對(duì)象,并使你的代碼更具可讀性且更扼要。

    posted on 2010-01-08 09:55 John Jiang 閱讀(3570) 評(píng)論(4)  編輯  收藏 所屬分類: JavaSE 、Java 、翻譯

    評(píng)論

    # re: 使用Google Collections的理由(譯) 2010-01-08 10:33 酷英在線詞典
    good....  回復(fù)  更多評(píng)論
      

    # re: 使用Google Collections的理由(譯) 2010-01-08 11:10 ycy
    nice  回復(fù)  更多評(píng)論
      

    # re: 使用Google Collections的理由(譯) 2010-01-08 16:43 Lancelot
    MultiMap這樣的東西Commons早就有了。  回復(fù)  更多評(píng)論
      

    # re: 使用Google Collections的理由(譯) 2010-01-09 10:27 YangL
    good job  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲无砖砖区免费| 免费在线观看黄网站| 亚洲成年轻人电影网站www | 亚洲国产综合精品一区在线播放| 亚洲粉嫩美白在线| 最近中文字幕免费mv视频7| 亚洲伊人久久精品| 两个人的视频高清在线观看免费| 亚洲av极品无码专区在线观看| 精品国产福利尤物免费| 国产又粗又长又硬免费视频| 亚洲av无码成人影院一区| 日韩免费一级毛片| 无套内谢孕妇毛片免费看看| 亚洲成人国产精品| 中文字幕在线免费视频| 三年片在线观看免费观看大全一 | 成人免费无码精品国产电影| 国产精品久久久久久亚洲影视| 尤物永久免费AV无码网站| 无忧传媒视频免费观看入口| 亚洲一区二区三区在线观看精品中文 | 亚洲AV男人的天堂在线观看| 免费高清在线爱做视频| 黄色网址在线免费观看| 国产AV无码专区亚洲AWWW | 人妻18毛片a级毛片免费看| 亚洲日本va在线视频观看| 日韩在线不卡免费视频一区| 亚洲一区二区三区在线观看蜜桃| 日韩免费福利视频| 国产无遮挡色视频免费观看性色| 亚洲视频免费一区| 四虎永久免费观看| 午夜免费福利小电影| 亚洲日韩一区二区三区| 亚洲宅男天堂在线观看无病毒| 永久在线观看www免费视频| 国产亚洲高清在线精品不卡| 国产∨亚洲V天堂无码久久久| 成人无码区免费视频观看 |