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:
final void checkforcomodification() }private class itr implements iterator
@suppresswarnings("unchecked")
public e next()
public void remove() catch (indexoutofbound***ception ex)
}
// 檢查當前集合是否被修改(併發、或者在iterator迭代時直接呼叫了容器的修改方法)
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...