復雜的事情要簡單做;   簡單的事情要認真做;   認真的事情要重復做;   重復的事情要創造性地做。

          信心 恒心 決心 創意 樂意

          も軍魂ミ 心系java

          Java的魅力:跨平臺、動態的Web、Internet計算 Java在Web、移動設備以及云計算方面前景廣闊 我的java編程不是夢!!! 俗話說的好:“授人以魚不如授人以漁”.
          posts - 10, comments - 12, trackbacks - 0, articles - 5
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java容器類的層次及區別

          Posted on 2010-11-07 01:08 セ軍魂ミ 閱讀(1920) 評論(2)  編輯  收藏 所屬分類: java容器類

              
          一、容器類層次




          二、容器類的區別       
                                                                           

              1)、Vector和ArrayList  
                          1,vector是線程同步的,所以它也是線程安全的,而arraylist是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用arraylist效率比較高。
                           2,如果集合中的元素的數目大于目前集合數組的長度時,vector增長率為目前數組長度的100%,而arraylist增長率為目前數組長度的50%.如過在集合中使用數據量比較大的數據,用vector有一定的優勢。
           
                       ArrayList 和Vector是采用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,都允許直接序號索引元素,但是插入數據要設計到數組元素移動等內存操作,所以索引數據快插入數據慢,Vector由于使synchronized方法(線程安全)所以性能上比ArrayList要差,
                       LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行向前或向后遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入數度較快

               2)、arraylist和linkedlist

               1.ArrayList是實現了基于動態數組的數據結構,LinkedList基于鏈表的數據結構。
               2.對于隨機訪問get和set,ArrayList覺得優于LinkedList,因為LinkedList要移動指針。
               3.對于新增和刪除操作add和remove,LinkedList比較占優勢,因為ArrayList要移動數據。
                 這一點要看實際情況的。若只對單條數據插入或刪除,ArrayList的速度反而優于LinkedList。
                 但若是批量隨機的插入刪除數據,LinkedList的速度大大優于ArrayList. 因為ArrayList每插入一條數據,要移動插入點及之后的所有數據。


              3)、HashMap與TreeMap 

                       1、HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。集合框架”提供兩種常規的Map實現:HashMap和TreeMap (TreeMap實現SortedMap接口)。

                      2、在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。使用HashMap要求添加的鍵類明確定義了hashCode()和 equals()的實現。  

          這個TreeMap沒有調優選項,因為該樹總處于平衡狀態。

             4)、hashtable與hashmap

               1.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現

               2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步

               3.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

              5)、Set與List
                 Set中的數據對象沒有順序不可以重復
                 List中的數據對象有順序可以重復


          評論

          # re: java容器類的層次及區別  回復  更多評論   

          2011-07-14 13:07 by stone2083
          推薦個畫圖軟件:
          linux下的dia,或者jude
          windows下的edraw,或者staruml,或者jude(跨平臺的)

          # re: java容器類的層次及區別  回復  更多評論   

          2011-07-14 23:02 by セ智軍ミ
          @stone2083
          恩,知道了。。我研究研究去,謝謝啊。。
          主站蜘蛛池模板: 青河县| 赤城县| 胶南市| 双江| 昌黎县| 新沂市| 行唐县| 海丰县| 永胜县| 商河县| 安龙县| 禄劝| 响水县| 襄汾县| 承德县| 西丰县| 诏安县| 德惠市| 军事| 高阳县| 宁波市| 黔东| 昭苏县| 祥云县| 株洲县| 建湖县| 东明县| 阿荣旗| 巫山县| 南靖县| 红桥区| 仙桃市| 黄浦区| 平远县| 墨玉县| 阜阳市| 金溪县| 电白县| 加查县| 太白县| 新巴尔虎左旗|