Read Sean

          Read me, read Sean.
          posts - 508, comments - 655, trackbacks - 9, articles - 4

          [Jakarta Commons筆記](méi) Commons Collections

          Posted on 2005-08-03 09:07 laogao 閱讀(3343) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): On Java

           

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

           

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

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

           

          目前Commons Collection發(fā)布的最新版本是3.1。建議下載這個(gè)3.1版本,頁(yè)面上出現(xiàn)的2.1.1是針對(duì)2.1不兼容3.0而發(fā)布的升級(jí)維護(hù)版。

           

          我們先來(lái)瀏覽一下它的包結(jié)構(gòu)。一共是12個(gè):

           

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

          org.apache.commons.collections.bag – 實(shí)現(xiàn)Bag接口的一組類(lèi)

          org.apache.commons.collections.bidimap – 實(shí)現(xiàn)BidiMap系列接口的一組類(lèi)

          org.apache.commons.collections.buffer – 實(shí)現(xiàn)Buffer接口的一組類(lèi)

          org.apache.commons.collections.collection – 實(shí)現(xiàn)java.util.Collection接口的一組類(lèi)

          org.apache.commons.collections.comparators – 實(shí)現(xiàn)java.util.Comparator接口的一組類(lèi)

          org.apache.commons.collections.functors – Commons Collections自定義的一組功能類(lèi)

          org.apache.commons.collections.iterators – 實(shí)現(xiàn)java.util.Iterator接口的一組類(lèi)

          org.apache.commons.collections.keyvalue – 實(shí)現(xiàn)集合和鍵/值映射相關(guān)的一組類(lèi)

          org.apache.commons.collections.list – 實(shí)現(xiàn)java.util.List接口的一組類(lèi)

          org.apache.commons.collections.map – 實(shí)現(xiàn)Map系列接口的一組類(lèi)

          org.apache.commons.collections.set – 實(shí)現(xiàn)Set系列接口的一組類(lèi)

           

          用過(guò)Java Collections API的朋友大概或多或少會(huì)同意我如下的劃分:在JavaCollections API中,不狹義的區(qū)分語(yǔ)法上的接口和類(lèi),把它們都看作是類(lèi)的話(huà),大致我們可以發(fā)現(xiàn)三種主要的類(lèi)別:

           

          1- 容器類(lèi):如CollectionListMap等,用于存放對(duì)象和進(jìn)行簡(jiǎn)單操作的;

          2- 操作類(lèi):如CollectionsArrays等,用于對(duì)容器類(lèi)的實(shí)例進(jìn)行相對(duì)復(fù)雜操作如排序等;

          3- 輔助類(lèi):如IteratorComparator等,用于輔助操作類(lèi)以及外部調(diào)用代碼實(shí)現(xiàn)對(duì)容器類(lèi)的操作,所謂輔助,概括而通俗的來(lái)講,就是這些類(lèi)提供一種算法,你給它一個(gè)對(duì)象或者一組對(duì)象,或者僅僅是按一定的規(guī)則調(diào)用它,它給你一個(gè)運(yùn)算后的答案,幫助你正確處理容器對(duì)象。比如Iterator會(huì)告訴你容器中下一個(gè)對(duì)象有沒(méi)有、是什么,而Comparator將對(duì)象大小/先后次序的算法邏輯獨(dú)立出來(lái)。

           

          同樣,Jakarta Commons Collections我們細(xì)細(xì)看來(lái),也能夠找出類(lèi)似的劃分:

           

          1- 作為容器類(lèi)的補(bǔ)充,我們可以找到BagBufferBidiMapOrderedMap等等;

          2- 作為操作類(lèi)的補(bǔ)充,我們可以找到CollectionUtilsIteratorUtilsListUtilsSetUtils等等;

          3- 作為輔助類(lèi)的補(bǔ)充,我們可以找到MapIteratorClosurePredicateTransformer等等;

           

          對(duì)于這樣的一個(gè)大包,當(dāng)然不可能一個(gè)類(lèi)一個(gè)類(lèi)的講了,找一些常用的和有用的當(dāng)做接下來(lái)討論的話(huà)題吧。大概列個(gè)清單:

           

          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組,在接下來(lái)的筆記中我們一起慢慢的看。

           

           

          Feedback

          # re: [Jakarta Commons筆記](méi) Commons Collections  回復(fù)  更多評(píng)論   

          2007-08-15 10:57 by 寒武紀(jì)
          受益了
          主站蜘蛛池模板: 柯坪县| 永嘉县| 孟连| 莱阳市| 舞钢市| 彰化县| 庄浪县| 社旗县| 河池市| 和硕县| 星座| 井陉县| 元氏县| 若羌县| 龙胜| 桐梓县| 松滋市| 安吉县| 长兴县| 手机| 永福县| 微山县| 庆元县| 客服| 荆州市| 新竹市| 自治县| 平湖市| 新竹县| 上蔡县| 观塘区| 临泉县| 广宁县| 桑日县| 厦门市| 宝丰县| 驻马店市| 名山县| 若羌县| 临城县| 体育|