posts - 156,  comments - 601,  trackbacks - 0
          公告
          <2008年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(45)

          隨筆分類(145)

          隨筆檔案(110)

          文章檔案(1)

          友情鏈接

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 679371
          • 排名 - 68

          最新評論

          閱讀排行榜

          評論排行榜

          本人早期整理的Java工具類學(xué)習(xí)筆記,分享出來,希望大家多多提點建議和意見。

          集合類
          • Set
            • HashSet
              • 優(yōu)點:
                  后臺實現(xiàn)一個hash table 加速get和contains方法。后臺使用數(shù)組保存
                缺點:
                 默認大小為16, 如果超過則需要重新申請內(nèi)存空間,大小為原來的兩倍,并把原來的數(shù)據(jù)內(nèi)容復(fù)制到
                 新的內(nèi)存空間中。
                 線程不安全(需通過Collections.synchronizedList方法設(shè)置)
                 加入的元素順序會因其內(nèi)部的hash排序而改變

                注:通常缺省的load factor 0.75較好地實現(xiàn)了時間和空間的均衡。增大load factor可以節(jié)省空間但相應(yīng)的查找時間將增大,這會影響像get和put這樣的操作。

            • LinkedHashSet
              • 優(yōu)點:
                  后臺實現(xiàn)一個hash table 加速get和contains方法。后臺使用鏈表保存
                缺點:
                 默認大小為16, 如果超過則需要重新申請內(nèi)存空間,大小為原來的兩倍,并把原來的數(shù)據(jù)內(nèi)容復(fù)制到
                 新的內(nèi)存空間中。
                 線程不安全(需通過Collections.synchronizedList方法設(shè)置)
                 加入的元素順序會因其內(nèi)部的hash排序而改變

                注:通常缺省的load factor 0.75較好地實現(xiàn)了時間和空間的均衡。增大load factor可以節(jié)省空間但相應(yīng)的查找時間將增大,這會影響像get和put這樣的操作。

            • TreeSet
              • 優(yōu)點:
                  通過一個HashMap來實現(xiàn)數(shù)據(jù)的保存,內(nèi)部實現(xiàn)紅黑樹數(shù)據(jù)結(jié)構(gòu),使所有元素按升序保存。
                  提供高效的get和contains方法,保存操作的效率為log(n)
                缺點:
                 默認大小為16, 如果超過則需要重新申請內(nèi)存空間,大小為原來的兩倍,并把原來的數(shù)據(jù)內(nèi)容復(fù)制到
                 新的內(nèi)存空間中(來自HashMap)。
                 線程不安全(需通過Collections.synchronizedList方法設(shè)置)
                 加入的元素升級排序而改變

                注:treeset對元素有要求,必須實現(xiàn)Comparable接口或是Comparator 接口)

                注:通常缺省的load factor 0.75較好地實現(xiàn)了時間和空間的均衡。增大load factor可以節(jié)省空間但相應(yīng)的查找時間將增大,這會影響像get和put這樣的操作。

            • CopyOnWriteArraySet
              • 優(yōu)點:
                 針對于對Set操作的情況有很多變化時使用,優(yōu)其是在高并發(fā)的情況不想使用同步控制鎖時
                缺點:
                 消耗比較大的資料,每次作更新操作時,都會重新Copy一塊內(nèi)存后,再做合并操作。
          • List
            • ArrayList
              • 優(yōu)點:
                   使用數(shù)組,提供快速的get,add和iterate方法,占用比較小的內(nèi)存空間
                缺點:
                   線程不安全(需通過Collections.synchronizedList方法設(shè)置)
                   insert和remove操作,非常慢(需要移動數(shù)組元素來實現(xiàn))
                   當(dāng)size超過時,需要新建一個較大的數(shù)據(jù)(默認大小是10,增量是 (size * 3)/2 + 1,
                   且把原來的數(shù)據(jù)都復(fù)制到新的上面)

            • LinkedList
              • 優(yōu)點:
                   使用鏈表結(jié)構(gòu),提供快速的add, insert, remove方法,占用比較小的內(nèi)存空間
                缺點:
                   線程不安全(需通過Collections.synchronizedList方法設(shè)置)
                   get操作,非常慢(需要從head一級級遍歷查找)

            • Vector
              • 優(yōu)點:
                 線程安全。
                缺點:
                 相對于ArrayList效率要低。擁有ArrayList的缺點。
            • CopyOnWriteArrayList
              • 優(yōu)點:
                 針對于對List操作的情況有很多變化時使用,優(yōu)其是在高并發(fā)的情況不想使用同步控制鎖時
                缺點:
                 消耗比較大的資料,每次作更新操作時,都會重新Copy一塊內(nèi)存后,再做合并操作。
            • TreeList(apache commons-collections)提供
              • 優(yōu)點:
                 基于二叉數(shù)  提供比較快速的get, add,insert,iterate,remove方法。其中g(shù)et,add和iterate方法比ArrayList稍慢一點。
                缺點:
                 相對于ArrayList和LinkedList占比較多的內(nèi)存空間
                 線程不安全(需通過Collections.synchronizedList方法設(shè)置)

          • Map
            • ConcurrentHashMap
              • 優(yōu)點:
                 基于二叉數(shù)  提供比較快速的get, add,iterate方法。默認大小的16.
                 它是線程安全
                缺點:
                 如果大小超過設(shè)定的大小時,效率會非常低。它會重新申請內(nèi)存空間(原來空間的兩倍),同時把原來的值復(fù)制到新內(nèi)存空間上。
                 

          Good Luck!
          Yours Matthew!
          posted on 2008-10-25 20:21 x.matthew 閱讀(4112) 評論(7)  編輯  收藏 所屬分類: Best Practise(JDK API)
          主站蜘蛛池模板: 罗甸县| 屏东县| 逊克县| 永和县| 玉树县| 彰化县| 来凤县| 错那县| 阿拉善左旗| 安陆市| 会宁县| 磐石市| 盱眙县| 五莲县| 江山市| 鲁山县| 松江区| 文安县| 盐池县| 丁青县| 内乡县| 即墨市| 临江市| 彰化县| 徐闻县| 高邮市| 泾阳县| 大冶市| 牙克石市| 易门县| 长兴县| 九寨沟县| 高青县| 鹤庆县| 阳高县| 兰考县| 桃江县| 泾川县| 错那县| 彩票| 商都县|