ArrayList底層探秘

2021-09-11 22:32:00 字數 2056 閱讀 3849

初始容量

private static final int default_capacity = 10;

空陣列

private static final object empty_elementdata = {};

預設容量

private static final object defaultcapacity_empty_elementdata = {};

transient 的作用:某些被修飾的成員屬性變數不被序列化

transient object elementdata;

private int size;
有引數構造給初始值

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

}

無參構造

public arraylist()

複製引數

public arraylist(collection<? extends e> c) else

}

根據size區更改容量

public void trimtosize()

}

擴充容量

public void ensurecapacity(int mincapacity)

}

計算容量

private static int calculatecapacity(object elementdata, int mincapacity)

return mincapacity;

}

private void ensurecapacityinternal(int mincapacity) 

private void ensureexplicitcapacity(int mincapacity)

擴充容量

private void grow(int mincapacity)

private static int hugecapacity(int mincapacity)

查詢陣列位置

public int indexof(object o) else

return -1;

}

倒著遍歷

public int lastindexof(object o) else

return -1;

}

轉殖引數

public object clone() catch (clonenotsupportedexception e)

}

輸入位址得到值

public e get(int index)

private void rangecheck(int index)
public e set(int index, e element)
新增引數

public void add(int index, e element)

根據索引移除引數

public e remove(int index)

移除集合引數

public boolean remove(object o)

} else

}return false;

}

清空

public void clear()

ArrayList底層分析

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

ArrayList底層實現

modifier and type method and description boolean add e e 將指定的元素追加到此列表的末尾 void add int index,e element 在此列表中的指定位置插入指定的元素。boolean addall collection exte...

ArrayList的底層實現

1 底層是object陣列,叫做 elementdata 2 預設容量10,叫做 default capacity,不是初始容量 3 如果不指定初始容量,剛new出來的list如果沒有儲存任何物件,則容量為0,但是如果指定了初始容量,剛開始size也是為0 arraylistlist new arr...