JAVA ARRAY 和ArrayList

1) 精闢闡述: 能夠講ArrayList想象成「會自動擴增容量的Array」,Array最高效,但其容量固定且不能動態改變
數組

                    ArrayList 犧牲效率,能夠動態擴容
spa

2) 基於類型和效率校驗,應儘量使用Array,沒法肯定數組大小時才使用ArrayListorm

    Array的功能可能過於受限
對象



細節:it

1)效率:
數組擴容是對ArrayList效率影響比較大的一個因素。
每當執行AddAddRangeInsertInsertRange等添加元素的方法,都會檢查內部數組的容量是否不夠了,若是是,它就會以當前容量的兩倍來從新構建一個數組,將舊元素Copy到新數組中,而後丟棄舊數組,在這個臨界點的擴容操做,應該來講是比較影響效率的。編譯

ArrayListArray的複雜版本
ArrayList內部封裝了一個Object類型的數組,從通常的意義來講,它和數組沒有本質的差異,甚至於ArrayList的許多方法,如IndexIndexOfContainsSort等都是在內部數組的基礎上直接調用Array的對應方法。
效率


2)類型識別:
ArrayList存入對象時,拋棄類型信息,全部對象屏蔽爲Object,編譯時不檢查類型,可是運行時會報錯。
ArrayList與Array的區別主要就是因爲動態增容的效率問題了
基礎

相關文章
相關標籤/搜索