ArrayList原始碼學習

2021-08-02 13:15:07 字數 1745 閱讀 3826

arraylist:乙個由陣列實現的集合物件,預設容量為10。

特點:1、隨機查詢快(因為陣列是連續的記憶體空間可以使用索引直接定位陣列內的元素)。

2、隨機插入慢(因為會移動陣列)。

方法:add():

public boolean add(e e)
grow():

擴容時先判斷當前陣列size的2倍是否滿足所需最小size,如果不滿足則直接設size為所需的最小size

private void grow(int mincapacity)

過載的構造方法:

public arraylist(collection<? extends e> c)

indexof()返回元素在陣列的索引:

public int indexof(object o)  else 

return -1;

}

add(e e):

public boolean add(e e)

add(int index, e e):

public void add(int index, e element)

set():

public e set(int index, e element)
remove():
public e remove(int index)

sublist(int fromindex, int toindex):

public listsublist(int fromindex, int toindex)

iterator:

private class itr implements iterator

@suppresswarnings("unchecked")

public e next()

public void remove() catch (indexoutofbound***ception ex)

}// 檢查當前集合是否被修改(併發、或者在iterator迭代時直接呼叫了容器的修改方法)

final void checkforcomodification() }

listiterator:在迭代過程中可以前進後退的iterator

private class listitr extends itr implements listiterator

public boolean hasprevious()

public int nextindex()

public int previousindex()

@suppresswarnings("unchecked")

public e previous()

public void set(e e) catch (indexoutofbound***ception ex)

}public void add(e e) catch (indexoutofbound***ception ex)

}}

ArrayList原始碼學習

對於arraylist我們都很熟悉,使用起來非常的方便,使用的較多的方法有add remove indexof 等,對於這種優秀的集合框架,研究其原始碼能讓我們對其掌握更加深刻,能更合理的應用在業務場景中,同時我們自己在寫程式時也能夠參考其設計思想,提供我們的編碼水平。一.arraylist簡介 1...

ArrayList原始碼學習

randomaccess 隨機快速訪問介面 cloneable是標記型的介面,它們內部都沒有方法和屬性,實現 cloneable來表示該物件能被轉殖,能使用object.clone 方法。如果沒有實現 cloneable的類物件呼叫clone 就會丟擲clonenotsupportedexcepti...

原始碼學習 ArrayList的擴容原始碼分析

原始碼如下 下面是arraylist的擴容機制 arraylist的擴容機制提高了效能,如果每次只擴充乙個,那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量 param mincapac...