yyq

          問君...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            98 隨筆 :: 1 文章 :: 42 評論 :: 0 Trackbacks

          概述

          FInt是一個用Java編寫的集合工具包,以下簡稱FI。因?yàn)镴ava自帶的集合包(java.util)不能直接操作基本數(shù)據(jù)類型,而必須使用基本類型的“包裝”類,這多少會影響程序性能或造成一些不便。FI實(shí)現(xiàn)了鍵或值是整數(shù)類型的集合工具包,但別的數(shù)據(jù)類型沒有實(shí)現(xiàn), 因?yàn)橐獙?shí)現(xiàn)所有數(shù)據(jù)類型的話,類的數(shù)目會很大,如果全靠手工編寫的話工作量也是很大的,而且也難維護(hù),因此如果以后真要實(shí)現(xiàn)的話,考慮使用類似于模板的方法。

           

          下載方法

          http://www.aygfsteel.com/Files/20070716/fint-1.1.zip

          構(gòu)成簡介

          FI主要提供了面向整數(shù)的集合、映射、列表的接口以及相應(yīng)的迭代器。

          FI主要使用了三種方式實(shí)現(xiàn)了上面的接口:

          • AVL樹,所有以AVL開頭的類。一般來說它的查找性能比紅黑樹略好,但對于要頻繁地插入刪除的情況,性能不如紅黑樹。
          • 紅黑樹,所有以RB開頭的類。Java系統(tǒng)庫的中的TreeMap實(shí)現(xiàn)也是采用紅黑樹。
          • 哈希表,所有以Hash開頭的類。由于采用了和Java系統(tǒng)庫中HashMap不同的沖突解決辦法,在沖突比較嚴(yán)重(裝載因子設(shè)得偏大)時仍有較好的性能,因此在沒有特殊情況時,推薦選用這些類。當(dāng)然,基于哈希表的類比其他的類要占用更多的空間,但可根據(jù)情況調(diào)節(jié)裝載因子來達(dá)到空間和時間的平衡。
          • BitVector,它基本上算是一個系統(tǒng)庫中BitSet的替代品,但不同的是,它也實(shí)現(xiàn)了整數(shù)集合接口IntSet,由于受位組實(shí)現(xiàn)方式的限制,集合只能保存非負(fù)整數(shù)。其缺點(diǎn)很明顯,當(dāng)集合中有一個數(shù)值很大的元素時,將導(dǎo)致內(nèi)存的的極大浪費(fèi)。不過其也有無與倫比的優(yōu)點(diǎn),就是插入和搜索速度都極快,基本上要比其他實(shí)現(xiàn)方式快一個數(shù)量級以上,因此在元素的值都比較小且非負(fù)的情況下推薦使用。
          • 整數(shù)列表,基本上就是系統(tǒng)庫中等價類的“整數(shù)版”而已。

          訪問者模式:Visitor。

          FI提供了多種訪問者接口,一般來說,在滿足需要的前提下,采用訪問者模式比迭代器模式更高效些。

          性能

          迄今為止,只拿FInt和系統(tǒng)庫中等價的類做過比較,從簡單的測試來看,集合和映射的插入、搜索操作都比系統(tǒng)庫快。另外因?yàn)镕I的哈希表采用紅黑樹來處理沖突,因此裝載能力比系統(tǒng)庫要強(qiáng)些(在裝載因子較大時仍有較好的性能)。

          至于其他的支持基本數(shù)據(jù)類型的集合庫,如Trove等,還沒拿FI和它們做過比較。


          posted on 2007-11-07 01:13 yyq 閱讀(980) 評論(1)  編輯  收藏 所屬分類: 編程

          評論

          # re: FInt —— 一個面向整數(shù)的Java集合工具包[未登錄] 2007-11-07 14:46 hehe
          支持一下,bookmark  回復(fù)  更多評論
            

          主站蜘蛛池模板: 淮北市| 惠水县| 台山市| 正镶白旗| 五台县| 宁明县| 凉城县| 东城区| 康平县| 乐平市| 犍为县| 甘洛县| 托里县| 沽源县| 江阴市| 大安市| 余干县| 鄂州市| 平昌县| 马山县| 凤城市| 辽中县| 林周县| 治县。| 无棣县| 邵武市| 玉树县| 都江堰市| 湖州市| 台南市| 三门县| 南江县| 清水河县| 全州县| 大荔县| 和龙市| 宜州市| 理塘县| 银川市| 柯坪县| 新巴尔虎右旗|