ArrayList效能分析

2021-08-29 20:56:21 字數 880 閱讀 3660

研究arraylist的效能,有助於我們在實際工作中更好的處理資料,與儲存資料。(讀本文之前最好先去看jdk1.7以上版本的arraylist原始碼,研究arraylist針對陣列做的演算法與資料結構思想)。

因時間原因,本文不分析**。

本人非常感謝!共同學習,共同進步!

大o演算法表示時間複雜度,專門用於計算效能相關的,在這裡我們簡單分析下arrayust的效能:

針對arrayist儲存資料的增刪改查(crud)

1):儲存操作:

如果把資料儲存在陣列的最後乙個位置,至少需要操作一次

如果把資料儲存在陣列的第乙個位置如果存在n個元素,此時需要操作n次(後面的元素要整體後移).平均: (n+1)/2次n表示陣列中元素的個數。如果要擴容更慢,效能更低

2):刪除操作:

如果刪除最後乙個元素操作一次.如果刪除第一乙個元素,操作n次.平均: (n+1)/2次。

3):修改操作:操作1次.

4):查詢操作:

如果根據索引查詢元素:操作1次.

如果根據元素查詢索引:此時使用線性搜尋操作:平均: (n+1)/2次:

發現:基於陣列的結構做查詢是和修改是非常快的,但是做儲存和刪除操作比較慢了.

如果現在就想保證儲存和刪除操作的效能怎麼辦?

那麼我們就要學習資料結構:鍊錶(linkedlist).

鍊錶將在下一文章更新!盡請期待...

ArrayList底層分析

arraylist實現於list randomaccess介面。可以插入空資料,也支援隨機訪問。相當於動態陣列,其中最重要的兩個屬性分別是 elementdata,以及size大小。在呼叫add 方法的時候 public boolean add e e 如果是呼叫add index,e 在指定位置新...

ArrayList原始碼分析

arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...

ArrayList原始碼分析

有參建構函式傳入乙個int public arraylist int capacity 如果為0則返回空陣列,否則new 乙個capacity的陣列 array capacity 0 emptyarray.object new object capacity 無參建構函式 public arrayl...