ArrayList的簡單實現

2021-08-15 22:35:09 字數 1184 閱讀 5744

set中的資料物件沒有順序且不可以重複;

list中的資料物件有順序且可以重複;

arraylist與linkedlist的區別就是陣列與鍊錶的區別,效率高,執行緒不安全;

vector底層也是陣列,執行緒安全,但是效率低。

每個arraylist例項的初始容量,預設為10,隨著arraylist元素的增加,它的容量也會增長,每次新增新的元素,都會對arraylist例項進行容量檢查,判斷是否需要擴容,擴容是將舊陣列的資料拷貝到乙個大容量的新陣列中。

/*** */

package com.sunlei;

/***說明

*/public class myarraylist

public int size()

public boolean isempty()

public myarraylist(int initialcapacity) catch (exception e)

} elementdata = new object[initialcapacity]; }

//下標越界檢查

public void rangecheckforadd(int index) catch (exception e)

} }//陣列擴容

public void ensurecapacityinternal() }

public void add(object obj)

public void add(int index,object obj)

public object get(int index)

public void remove(int index)

public void remove(object obj) {

for(int i=0;i1.在方法的帶入引數中出現下邊時,都要對下標做範圍檢查,防止下標越界。

2.陣列擴容,採用的是擴大到原來陣列大小的2倍再加1,與jdk原始碼裡面的有不同。

3.陣列類容拷貝,採用的是system.arraycopy(src, srcpos, dest, destpos, length)方法

src表示的是原陣列;

srcpos表示原陣列中開始擷取的地方;

dest表示目標陣列,即新陣列;

destpos表示目標陣列中開始放的地方;

length表示擷取的長度。

ArrayList 內部實現簡單理解

arraylist是基於陣列的,內部是用 object實現的 當new 乙個空參 arraylist 的時候,系統生成乙個長度為0的object陣列。當new乙個有參的arraylist的時候,該值作為陣列的長度值。如果該值小於 0,則丟擲乙個執行時異常。如果等於 0,則使用乙個空陣列,如果大於 0...

自己實現乙個簡單的ArrayList

自己簡單的實現arraylist的 註解很清楚了,寫了arraylist的add obj 方法 remove index 方法,get index 方法,自己定義迭代器,自己進行迭代 迭代器介面 public inte ce iterator集合 的實現 version description 自己...

表 ArrayList的實現

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