<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

       :: 首頁(yè) ::  :: 聯(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類庫(kù)會(huì)有什么好處。Google Collections的發(fā)行包是一個(gè)zip文件,包含了一個(gè)jar文件,源文件和Javadoc文件。
    Java Collections API就是被用來(lái)擴(kuò)展的,而Google Collections則擴(kuò)展的很好。很快,我就發(fā)現(xiàn)該類庫(kù)最好的特性之一是它包含了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,將變得十分簡(jiǎn)潔:
    Multimap <Person, PhoneNumber> newPhoneBook = ArrayListMultimap.create();

    且在使用MultiMap時(shí),就沒(méi)必要管理每個(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),通過(guò)判定一個(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ì)該類庫(kù)有一個(gè)很好的概覽,查看由Kevin Bourrillion在2008年給出的一段視頻
    總之,該類庫(kù)使你能以更優(yōu)雅的方法來(lái)處理集合對(duì)象,并使你的代碼更具可讀性且更扼要。

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

    評(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)論
      

    主站蜘蛛池模板: 亚洲欧美日韩国产成人| 亚洲AV无码成人精品区大在线| 亚洲精品无码成人片久久| 97人伦色伦成人免费视频| 亚洲一区免费观看| 99久久精品免费精品国产| 亚洲国产高清在线| 最近中文字幕免费mv在线视频| 亚洲av永久无码精品表情包| 久久99青青精品免费观看| 色婷婷亚洲十月十月色天| 无码人妻丰满熟妇区免费| 亚洲高清日韩精品第一区| 18观看免费永久视频| 亚洲乱码一二三四区乱码| 国外成人免费高清激情视频| 久久亚洲精品无码av| 久久久久亚洲av成人无码电影| 精品无码一级毛片免费视频观看 | 在线永久免费的视频草莓| 亚洲精品天堂在线观看| 在线观看亚洲免费| 精选影视免费在线 | 亚洲AV无码欧洲AV无码网站| 久久久久久精品免费免费自慰| 亚洲精品免费网站| 久久影院亚洲一区| 在线观看的免费网站无遮挡| 亚洲日韩乱码中文字幕| 亚洲精品久久久www | 国产在线观看无码免费视频| 亚洲精品国产成人99久久| 久久久久久久免费视频| 国产亚洲高清不卡在线观看| 久久午夜夜伦鲁鲁片免费无码影视| 在线精品亚洲一区二区| 国产国拍精品亚洲AV片| 免费三级毛片电影片| 成人一级免费视频| 亚洲性色高清完整版在线观看| 哒哒哒免费视频观看在线www|