數據中數組的內存是順序存儲的,而鏈表是隨機存取的。程序員
數組隨機訪問效率很高,但插入刪除操做的效率比較低。數組
鏈表在插入刪除操做上相對數組有很高的效率,而若是訪問鏈表中的某個元素,那就要從表頭逐個遍歷,直到找到所須要的元素爲止,因此鏈表的隨機訪問效率比數組低。編碼
鏈表不存在越界問題,數組有越界問題。對象
數組節省空間可是長度固定。鏈表雖然變長,可是佔了更多的存儲空間。索引
靜態)數組從棧中分配內存空間,對於程序員方便快速,可是自由度小。鏈表從堆中分配空間,自由度大,但申請管理比較麻煩。接口
ArrayList和LinkedList都實現了List接口,他們有如下的不一樣點:內存
ArrayList是基於索引的數據接口,它的底層是數組。它能夠以O(1)時間複雜度對元素進行隨機訪問。與此對應,LinkedList是以元素列表的形式存儲它的數據,每個元素都和它的前一個和後一個元素連接在一塊兒,在這種狀況下,查找某個元素的時間複雜度是O(n)。rem
相對於ArrayList,LinkedList的插入,添加,刪除操做速度更快,由於當元素被添加到集合任意位置的時候,不須要像數組那樣從新計算大小或者是更新索引。it
LinkedList比ArrayList更佔內存,由於LinkedList爲每個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。效率