seaairland

           

          Commons-collection

          Commons項目理解
          ??????? 在java項目中有很多公用的算法實現和工具類
          ??????? jarkata項目組把這些公用的東西作為開源項目加以實現
          ??????? 以后在項目使用中就可以統一算法,不必寫象StringUtil或者DateHelper之類的工具類了
          ??????? 很多算法也不必再查文檔,熬夜寫個通宵了,:)
          ??????? 最近需要針對collection作一些擴展,自己寫了半天,才發現commons-collection里面已經有了實現
          ??????? 而且比自己寫的好更完善,效率更高
          ??????? 索性來研究一下這個項目,因為很多開源項目也使用它
          ??????? 以后看開源項目代碼的時候也就不用那么費力了
          ???????
          概述
          ??????? 首先這個包是基于JDK1.2開發的,所以以后在調用的時候就不用關心JDK版本的問題
          ??????? 其二這個包在大部分的開源項目中使用,已經成為事實上的行業集合類處理標準
          特性描述
          ??????? Bag集合接口,用于在集合中保存一個對象的多次拷貝
          ??????? Buffer接口,用于處理FIFO等定義好移除順序的結合類
          ??????? BidiMap接口,用于通過value查找key
          ??????? MapIterator,這個就不用多說了,以后就不用使用map.keyset.iterator去處理map循環了
          ??????? 型別檢查裝飾,其實就是可以創建一個具有指定型別的集合類
          ??????????????? 比如定義了一個整型的list,就不能再向這個list里面放String,否則會拋出異常
          ??????? 轉換修飾,就是在向集合中放入對象時,可以將對象轉換為需要的類型的對象再放入集合中
          ??????? 組合集合,一個非常好的概念,就是把多個集合當一個集合去使用
          ??????? 排序Map和Set,保持集合的加入順序
          ??????? Identity Map,這個Map中使用==而不是equal()方法去比較對象

          ??????? * Reference map that allows keys and/or values to be garbage collected under close control
          ??????? 更多的比較實現
          ??????? 更多的迭代實現
          ??????? 將數組或枚舉類型裝換到集合類中,非常好用的功能,畢竟array的功能有限
          ???????
          ??????? * Utilities to test or create typical set-theory properties of collections such as union, intersection, and closure

          個人對于一些類的體會
          ??????? 第一個就是TypedList(還有map,set都一樣)
          ??????? 可以創建一個String的List,或者一個只能放入指定Class的List,避免編程時候的誤寫
          ??????? java編程思想中提到過創建指定型別的集合的問題,不過使用這個類就不用那么麻煩了

          ??????? CollectionUtils
          ??????????????? 針對集合進行與/并/判斷是否包含/等于等工具方法
          ??????????????? 查找一個集合中某個對象出現的數量
          ??????????????? 查找(或過濾)一個集合中某種class的子集合,或者計算數量
          ??????????????? 將集合中的對象進行轉換處理
          ??????????????? 將數組或枚舉對象放入集合中
          ??????????????? 提供針對所有集合類的index,size,get等方法
          ??????????????? 提供數組翻轉方法
          ??????????????? 提供集合的同步修飾
          ??????????????????????? 比如HashMap本身是不支持同步的,但這個類提供了一個同步修飾
          ??????????????????????? 以后再使用經過修飾后的HashMap時就不用考慮同步的問題了
          ??????????????? 提供禁止修改集合的工具方法
          ??????? 同CollectionUtils一樣還有相應的ListUtils,SetUtils等工具類
          ??????????????? 這些工具類提供的方法基本都出現在CollectionUtils中

          ??????? ArrayStack
          ??????????????? 一個繼承自ArrayList的Stack實現
          ??????? BeanMap
          ??????????????? 一個用于分析javaBean的Map容器,個人感覺用于測試比較方便
          ??????????????? 因為beanUtils類也可以做這個類的事情,這個類方便的是讀取所有屬性并顯示
          ??????? BidiMap
          ??????????????? 就是一個可以通過value查找key的Map
          ??????????????? 限制:添加對象時,value不能相同
          ??????????????? 因為這個類還有一個方法就是創建一個反向Map,把value作為key,把key作為value再創建一個Map
          ??????? BoundedCollection接口
          ??????????????? 所有實現此接口的集合均被限制了集合大小,不過超過約束的大小
          ??????? Buffer接口
          ??????????????? 非常好的一個接口,實現了按照指定順序移除對象
          ??????????????? 可以用來實現FIFO,LIFO等算法
          ??????????????? 也可以通過Comprator來構造,指定確定的移除算法
          ??????? Ordered**接口
          ??????????????? 用來實現集合排序
          ??????? Predicate接口(斷言)
          ??????????????? 用來驗證或過濾對象
          ??????? Transformer接口
          ??????????????? 用來把一個對象轉換成另為一個對象
          ??????? Closure接口
          ??????????????? 用來封閉一段代碼,針對對象進行指定的處理
          ??????? Unmodifiable接口
          ??????????????? 所以實現(或包含了)此接口的對象均不可以改變

          ??????? ComparatorUtils類
          ??????????????? 實現了各種比較
          ??????????????? 布爾值比較實現
          ??????????????? null判斷比較
          ??????????????? 比較鏈的實現
          ??????????????? 獲取min,max對象
          ??????? AbstractDualBidiMap
          ??????????????? 一個包含了兩個bidiMap的抽象類
          ??????????????? 因為bidiMap可以做雙向查找
          ??????????????? 繼承AbstractDualBidiMap后,內部的兩個map一個針對key排序,一個針對value排序
          ??????????????? 可以加快訪問速度
          ??????? EnumerationUtils
          ??????????????? 包含了toList()方法,可以簡化代碼
          ??????? ExtendedProperties 比較好玩
          ??????????????? 提供了增強的properties處理
          ??????????????? 處理多行
          ??????????????? 處理多個相同的聲明
          ??????? Fast***
          ??????????????? 提供了在多線程中針對集合的快速訪問
          ??????????????? 當進行只讀操作時,不進行同步處理
          ??????????????? 當進行寫操作時
          ??????????????????????? 克隆整個集合
          ??????????????????????? 針對克隆執行修改
          ??????????????????????? 使用克隆替換現有對象
          ??????? MultiHashMap
          ??????????????? 實現了多key的map
          ??????????????? 當get時返回list對象
          ??????? StaticBucketMap ***********(高效)
          ??????????????? 是一個非常高效的Map, get, put, remove 和 containsKey? 操作都被進行了優化
          ??????????????? 這個Map里面有多個Buck(桶)用于存儲數據
          ??????????????? 這樣在多線程中取數據的使用,是從不同的桶中取,真正實現了同步機制
          ??????????????? 當然,在進行批量操作時無法保證原子性,要注意這一點

          posted on 2006-05-04 12:15 chenhui 閱讀(751) 評論(0)  編輯  收藏 所屬分類: 好文收集Jakarta Commons

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          介紹 IOC

          友情鏈接

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 尼木县| 宕昌县| 浪卡子县| 祁阳县| 阿合奇县| 西峡县| 锡林浩特市| 海宁市| 裕民县| 丹阳市| 垦利县| 武邑县| 峨山| 榆社县| 康马县| 林甸县| 平陆县| 若羌县| 祁东县| 合肥市| 乌拉特前旗| 迁安市| 峨边| 枝江市| 武乡县| 武定县| 夏津县| 连山| 开封县| 都兰县| 九江县| 黔西县| 丰都县| 肃宁县| 宁波市| 海门市| 靖江市| 曲沃县| 西乌珠穆沁旗| 武鸣县| 桐柏县|