ArrayList的實現方式

2021-09-25 21:46:01 字數 780 閱讀 5958

通過該構造器來完成arraylist的建立,預設值為10。

public arraylist(int initialcapacity)  else if (initialcapacity == 0)  else 

}

以上**顯示例項化了乙個object陣列,並將該陣列賦給elementdata屬性。這個陣列大小為initialcapacity的值,因此在呼叫空構造器的時候會建立乙個大小為10的陣列。但是我們呼叫add方法時,按照前面說的,arraylist本質就是陣列,但是陣列有固定大小的,如果滿了,我們改怎麼辦?這裡就有必要理解下arraylist的實現方式:

我們在呼叫add方法的時候,首先會產生乙個變數為mincapacity:是在arraylist的陣列元素加1,用來和object陣列比較大小,如果mincapacity大於陣列值,那麼先將的object陣列賦值給乙個的陣列物件,接著產生乙個新的陣列的容量值。此值的計算方法為當前陣列值*1.5+1,如果得出的容量值仍然小於mincapacity那麼就以mincapacity作為新的容量值,在得出這個容量值後,呼叫arrays.copyof來生成新的陣列物件。

private static int calculatecapacity(object elementdata, int mincapacity)

return mincapacity;

}private void ensurecapacityinternal(int mincapacity)

表 ArrayList的實現

增 只在末尾插入的話,o 1 如果是中間插入的話,o n 刪 通過下標刪除的話,o n 通過值刪除的話 o n 2 改 o 1 查 因為arraylis的實現就是乙個一維陣列,所以可以快速通過下標讀取資料,o 1 但是如果是遍歷查詢的話,為o n 迭代器 remove的時候會還是會o n 這是陣列本...

ArrayList的簡單實現

set中的資料物件沒有順序且不可以重複 list中的資料物件有順序且可以重複 arraylist與linkedlist的區別就是陣列與鍊錶的區別,效率高,執行緒不安全 vector底層也是陣列,執行緒安全,但是效率低。每個arraylist例項的初始容量,預設為10,隨著arraylist元素的增加...

ArrayList的實現原理

arraylist是list介面的可變陣列的實現。實現了所有可選列表操作,並允許包括 null 在內的所有元素。除了實現 list 介面外,此類還提供一些方法來操作內部用來儲存列表的陣列的大小。每個 arraylist 例項都有乙個容量,該容量是指用來儲存列表元素的陣列的大小。它總是至少等於列表的大...