糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          [Jakarta Commons筆記] Commons Collections

          Posted on 2007-09-25 22:42 Stanley Sun 閱讀(1215) 評論(0)  編輯  收藏 所屬分類: jakarta Commons

          Commons Collections,又是一個重量級的東西,為Java標準的Collections API提供了相當好的補充。我不知道其他人,就我自己而言,讓我用java.util.Collection及其子類,加上java.util.Collections類 提供的操作方法,處理一些簡單的數據結構問題還可以,稍微復雜一點的就覺得有點頭痛,很多細節的地方需要我插入這樣那樣的小邏輯,或者感覺它太死板,不夠 靈活,再或者確實有點晦澀吧。再說了,如果我只是處理一般的數據結構問題,為什么不自己用數組或者自定義的鏈表來做,再加上Jakarta CommonsLang提供的ArrayUtils、StringUtils等,已經基本夠了,性能可以保證,那么還要這個Collections API干嘛。當然,說到這里有些偏激了,Collections當然有它存在的道理,能夠把常用的數據結構歸納起來,以通用的方式去維護和訪問,這應該說是一種進步,但是用起來似乎不夠友好。這個時候我就會想,如果Java比現在做得更好用些,或者有一套第三方的API把我的這些需求抽象出來,實現了,該多好。Commons Collections就是這樣一套API。

           

          在這里可以找到下載鏈接:(binarysrc都有)

          http://jakarta.apache.org/site/downloads/downloads_commons-collections.cgi

           

          目前Commons Collection發布的最新版本是3.1。建議下載這個3.1版本,頁面上出現的2.1.1是針對2.1不兼容3.0而發布的升級維護版。

           

          我們先來瀏覽一下它的包結構。一共是12個:

           

          org.apache.commons.collections – Commons Collections自定義的一組公用的接口和工具類

          org.apache.commons.collections.bag – 實現Bag接口的一組類

          org.apache.commons.collections.bidimap – 實現BidiMap系列接口的一組類

          org.apache.commons.collections.buffer – 實現Buffer接口的一組類

          org.apache.commons.collections.collection – 實現java.util.Collection接口的一組類

          org.apache.commons.collections.comparators – 實現java.util.Comparator接口的一組類

          org.apache.commons.collections.functors – Commons Collections自定義的一組功能類

          org.apache.commons.collections.iterators – 實現java.util.Iterator接口的一組類

          org.apache.commons.collections.keyvalue – 實現集合和鍵/值映射相關的一組類

          org.apache.commons.collections.list – 實現java.util.List接口的一組類

          org.apache.commons.collections.map – 實現Map系列接口的一組類

          org.apache.commons.collections.set – 實現Set系列接口的一組類

           

          用過Java Collections API的朋友大概或多或少會同意我如下的劃分:在JavaCollections API中,不狹義的區分語法上的接口和類,把它們都看作是類的話,大致我們可以發現三種主要的類別:

           

          1- 容器類:如Collection、ListMap等,用于存放對象和進行簡單操作的;

          2- 操作類:如Collections、Arrays等,用于對容器類的實例進行相對復雜操作如排序等;

          3- 輔助類:如Iterator、Comparator等,用于輔助操作類以及外部調用代碼實現對容器類的操作,所謂輔助,概括而通俗的來講,就是這些類提供一種算法,你給它一個對象或者一組對象,或者僅僅是按一定的規則調用它,它給你一個運算后的答案,幫助你正確處理容器對象。比如Iterator會告訴你容器中下一個對象有沒有、是什么,而Comparator將對象大小/先后次序的算法邏輯獨立出來。

           

          同樣,Jakarta Commons Collections我們細細看來,也能夠找出類似的劃分:

           

          1- 作為容器類的補充,我們可以找到Bag、Buffer、BidiMapOrderedMap等等;

          2- 作為操作類的補充,我們可以找到CollectionUtils、IteratorUtilsListUtils、SetUtils等等;

          3- 作為輔助類的補充,我們可以找到MapIterator、ClosurePredicate、Transformer等等;

           

          對于這樣的一個大包,當然不可能一個類一個類的講了,找一些常用的和有用的當做接下來討論的話題吧。大概列個清單:

           

          Bag

          HashBag

          BagUtils

           

          Buffer

          BlockingBuffer

          BoundedFifoBuffer

          PriorityBuffer

          BufferUtils

           

          MultiMap

          BidiMap

          CaseInsensitiveMap

          LazyMap

          MapUtils

           

          TypedCollection

          CollectionUtils

           

          ReverseComparator

          ComparatorChain

          NullComparator

          FixedOrderComparator

          ComparatorUtils

           

          Predicate

          AndPredicate

          OrPredicate

          AllPredicate

          OnePredicate

          NonePredicate

          PredicateUtils

           

          Transformer

          ChainedTransformer

          SwitchTransformer

          TransformerUtils

           

          Closure

          ChainedClosure

          IfClosure

          WhileClosure

          ClosureUtils

           

          LoopingIterator

          ArrayListIterator

          FilterIterator

          UniqueFilterIterator

          IteratorUtils

           

          總共9組,在接下來的筆記中我們一起慢慢的看。
          主站蜘蛛池模板: 莒南县| 泾川县| 瓮安县| 隆昌县| 淅川县| 墨竹工卡县| 辽宁省| 民丰县| 莱西市| 常德市| 清涧县| 桂林市| 香格里拉县| 山阴县| 怀远县| 邢台市| 雷波县| 罗定市| 涟源市| 高台县| 淳化县| 晋宁县| 长乐市| 崇礼县| 怀安县| 泸水县| 罗城| 邓州市| 阿鲁科尔沁旗| 瓮安县| 长海县| 盐津县| 米泉市| 灵石县| 鲁甸县| 湖南省| 中卫市| 安达市| 无锡市| 泽州县| 台南县|