【刷題】數組與鏈表 & ArrayList和LinkedList Array和ArrayList

數組與鏈表

  • 數據中數組的內存是順序存儲的,而鏈表是隨機存取的。程序員

  • 數組隨機訪問效率很高,但插入刪除操做的效率比較低。數組

  • 鏈表在插入刪除操做上相對數組有很高的效率,而若是訪問鏈表中的某個元素,那就要從表頭逐個遍歷,直到找到所須要的元素爲止,因此鏈表的隨機訪問效率比數組低。編碼

  • 鏈表不存在越界問題,數組有越界問題。對象

  • 數組節省空間可是長度固定。鏈表雖然變長,可是佔了更多的存儲空間。索引

  • 靜態)數組從棧中分配內存空間,對於程序員方便快速,可是自由度小。鏈表從堆中分配空間,自由度大,但申請管理比較麻煩。接口

ArrayList和LinkedList

  • ArrayList和LinkedList都實現了List接口,他們有如下的不一樣點:內存

  • ArrayList是基於索引的數據接口,它的底層是數組。它能夠以O(1)時間複雜度對元素進行隨機訪問。與此對應,LinkedList是以元素列表的形式存儲它的數據,每個元素都和它的前一個和後一個元素連接在一塊兒,在這種狀況下,查找某個元素的時間複雜度是O(n)。rem

  • 相對於ArrayList,LinkedList的插入,添加,刪除操做速度更快,由於當元素被添加到集合任意位置的時候,不須要像數組那樣從新計算大小或者是更新索引。it

  • LinkedList比ArrayList更佔內存,由於LinkedList爲每個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。效率

Array和ArrayList的不一樣點:

  • Array能夠包含基本類型和對象類型,ArrayList只能包含對象類型。
  • Array大小是固定的,ArrayList的大小是動態變化的。
  • ArrayList提供了更多的方法和特性,好比:addAll(),removeAll(),iterator()等等。
  • 對於基本類型數據,集合使用自動裝箱來減小編碼工做量。可是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。

END

相關文章
相關標籤/搜索