Arraylist 和 Vector 和Linkedlist的區別


     1.首先我們從它們底層數據結構來分析

          (1)Arraylist 和 Vector都是基於數組實現的,你可以從它的單詞結構構成都可以看出,但是這個兩個還是有一點點區別的

                  Arraylist的實現原理是采用一個動態對象數組實現的,默認構造方法創建一個空數組

           

            

         Vector的實現原理也是采用一個動態對象數組實現的,只不過它的默認構造方法創建一個大小為10的對象數組

          

       

      

     

    (2) Arraylist第一次添加元素時候,擴展容量為10,之后的擴充算法:原來數組大小+原來數組的一半(也就是1.5倍)

      

      

     

     

     

應該可以很清楚的知道ArrayList底層擴容的原理了。而Vector和Arraylist的擴容機制類似,與Vector不同的是,Vector分兩種情況如果增量為0的情況下每次擴容容量是翻倍,即為原來的2倍,而當增量>0的時候,擴充為原來的大小加增量,而ArrayList是1.5倍。看似1.5倍增長的很慢,那經常增加大量元素會不會導致經常擴容,數組重新分配導致效率低下呢?其實不然,每次增長為原來的1.5倍實際增長的量會越來越大的
   (3)所以Arraylist和Vector不適合進行刪除或插入操作

    (4)為了防止數組動態擴充過多,建議創建ArrayList或者Vector時,給定初始容量。

    (5)Arraylist多線程中使用不安全,適合在單線程訪問時使用,效率較高,而Vector線程安全,適合在多線程訪問時使用,效率較低

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM