java 集合 之 如何選擇集合

使用java集合的 “缺點”

集合不能使用基本數據類型,只能使用對象句柄

在將對象置入一個集合時丟失了類型信息,集合實際容納的是類型爲Object 的一些對象的句柄,但不包含基本數據類型,不存在類型信息,使用之前要進行類型塑造。

集合框架

 

 

 

 

 

集合比較

個人總結 

如何選擇集合:

是否鍵值對:

  是:Map

    鍵是否排序:

      是:TreeMap,類似TreeSet

      否:HashMap(不知道就使用HashMap),線程不安全,類似hashset。linkedHashMap(有序)繼承於它。

      Hashtable:線程安全,但是鎖定整個表

      ConcurrentHashMap:線程安全,使用桶鎖

  否:Collection
    元素唯一:

      是:set

        元素排序:

          是:TreeSet

          否:HashSet(不知道用HashSet)

          線程安全的結構:

          CopyOnWriteArraySet

      否:List

        安全:

          是:Vector(其實不用)

          否:ArrayList或者LinkedList

            增刪多:LinkedList。適合增加刪除以及修改的操作線程不安全,效率高

            查詢多:ArrayList(不知道就用)。適合隨機的查找,增刪慢,線程不安全,效率高        

                兩種線程安全的arrayList
                CopyOnWriteArrayList類 (內部是使用lock進行加鎖解鎖完成單線程訪問)
                Collections.synchronizedList內部類(使用synchronize關鍵字,插入比上面的快,數據量10萬)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章