John Jiang

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

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

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

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

          且在使用MultiMap時,就沒必要管理每個人的電話號碼列表了。當我要加一個新的電話號碼時,只需這么做:
          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));
          對需要處理的數據進行管理這個話題,Precondition允許你對傳入的參數進行校驗。
          Preconditions.checkNotNull(me);

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

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

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

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

          評論

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

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

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

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

          主站蜘蛛池模板: 湖州市| 长丰县| 民权县| 东台市| 普格县| 洪泽县| 隆尧县| 滦平县| 会东县| 沅陵县| 中山市| 竹山县| 灵山县| 奉化市| 繁峙县| 莎车县| 洪雅县| 清丰县| 竹北市| 南澳县| 长白| 郁南县| 阜新市| 德州市| 两当县| 双鸭山市| 阳城县| 邓州市| 叶城县| 斗六市| 榆社县| 乐东| 日喀则市| 黔西| 吉木萨尔县| 肥东县| 巴马| 盐津县| 项城市| 凌源市| 昌吉市|