无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ArrayList集合解析(1.8版本)

2023-06-23 21:14 作者:擺動滴呆毛  | 我要投稿

ArrayList的底層數(shù)據(jù)結(jié)構(gòu)是動態(tài)數(shù)組。

特點是,容量可以改變,可以通過索引獲取數(shù)據(jù),數(shù)據(jù)存入順序為有序

初始容量

ArrayList的初始容量為0

一開始通過無參構(gòu)造創(chuàng)建ArrayList時,會創(chuàng)建容量為0的Object數(shù)組,

圖中elementData是一個引用類型為Object數(shù)組的成員變量,右邊是一個空數(shù)組。

DEFAULTCAPACITY_EMPTY_ELEMENTDATA也是一個成員屬性


那ArrayList是什么時候有才開始有容量的呢?

答案是第一次使用add方法存入數(shù)據(jù)的時候

首先進入add方法

size參數(shù)表示當(dāng)前數(shù)組里有幾個元素,+1表示增加最小容量

進入ensureCapacityInternal方法

然后在進入calculateCapacity

第一次初始化就在這里了,它會先判斷當(dāng)前數(shù)組的地址是不是等于空數(shù)組的地址,如果為true

會進行容量的大小比較返回最大的那個值,DEFAULT_CAPACITY是成員常量,是一個int 類型,值為10。因為是第一次比較,10一定比minCapacity大,所以返回10。


然后在進入ensureExplicitCapacity

它會判斷最小擴容容量是否大于當(dāng)前數(shù)組的大小,如果大于0表示已經(jīng)超過當(dāng)前數(shù)組的大小了

就要進行擴容方法

oldCapacity表示舊容量也就是當(dāng)前數(shù)組的大小

int newCapacity = oldCapacity + (oldCapacity >> 1)的意思是老容量的大小加上老容量的一半

右移一位表示除以2的意思。

然后進行判斷,如果newCapacity-minCapacity<0表示擴容了1.5倍還是不夠,那就已最小容量為準(zhǔn),然后進行數(shù)組的拷貝,這樣數(shù)組就動態(tài)擴容了。



ArrayList集合解析(1.8版本)的評論 (共 條)

分享到微博請遵守國家法律
通化县| 大安市| 玉田县| 兴化市| 桐乡市| 佳木斯市| 苏尼特左旗| 新民市| 灵丘县| 玉门市| 华宁县| 桃源县| 兴化市| 浠水县| 永泰县| 黔西| 竹溪县| 鄂伦春自治旗| 离岛区| 罗田县| 克什克腾旗| 宜春市| 讷河市| 都匀市| 甘南县| 灵山县| 容城县| 扶沟县| 宁化县| 武定县| 赤峰市| 乳山市| 凯里市| 顺义区| 定远县| 连州市| 志丹县| 高阳县| 洮南市| 峨边| 丰都县|