1. 程式人生 > >ArrayList 集合詳解

ArrayList 集合詳解

特點:

1.底層資料結構是陣列
2.預設陣列大小是10
3.保證了資料的有序性,按照插入順尋來儲存
4.查詢效率高,基於陣列索引來定位資料
5.集合擴容每次擴容為原大小的1.5倍.
6.集合資料可以重
ArrayList的繼承關係

方法

trimToSize():作用是去掉預留元素的位置,記憶體緊張的時候用
ensureCapacity(int n):如果ArrayList中新增大量元素,可用此方法增加效率,一次性擴容.
grow(int m):以1.5倍擴容

int oldCapacity = elementData.length;
int newCapacity = oldCapacity+(oldCapacity >>1);

contains(Object o):返回boolean值,該連結串列中是否有O
indexOf(Object o):返回o在ArrayList中第一次出現的位置,沒有就返回-1.
lastIndexOf(Object o):返回o在ArrayList中最後一次出現的位置,沒有就返回-1
clone():克隆,返回ArrayList,會產生新物件
get(int i):得到i號索引位置的值,先回進行rangeCheck(i)
set(int i,E e):這是在i號位置用e進行replace,然後返回原來的elem.
add(E e):先會進行ensureCapacityInternal(size+1)//modCount change
add(int i,E e)

:先會進行rangeCheck 再ensureCapacityInternal(size+1) //modCount change

原始碼分析

remove(int i):
在這裡插入圖片描述
numMoved是要進行移位的元素個數,運用陣列拷貝進行移位

addAll(Collection <? extends E> c):
在這裡插入圖片描述
先將容器C裡面的資料轉換成陣列,然後運用陣列拷貝
從a的0號開始 拷貝到elementData的後面,拷貝a.length個

addAll(int i,Collection c):
將指定容器從i號位置開始進行新增.

求並集

在這裡插入圖片描述
在這裡插入圖片描述

求交集

在這裡插入圖片描述