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 這是陣列本...