国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術,適合java零基礎,Java

2023-07-24 11:03 作者:bili_12581762483  | 我要投稿

ArrayList 底層是一個object數組elementData 存儲元素

無參構造this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;將里面的數組賦值成一個空數組

add()方法

 public boolean add(E e) {
????ensureCapacityInternal(size + 1);?//size 實際集合存儲元素的個數
????elementData[size++] = e;//存儲元素
????return true;
?}
private void ensureCapacityInternal(int minCapacity) {
??ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));//calculateCapacity計算集合容量 
}
private static int calculateCapacity(Object[] elementData, int minCapacity) {
????if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
??????return Math.max(DEFAULT_CAPACITY, minCapacity);//如果集合是空數組 ,返回 默認最小的集合長度10與實際需要的集合長度size+1的較大值
???}
????return minCapacity;//不是空集合,就返回size+1
?}
??private void ensureExplicitCapacity(int minCapacity) {
????modCount++;

????// overflow-conscious code
????if (minCapacity - elementData.length > 0)
??????grow(minCapacity);//如果計算的長度大于集合的長度,就擴容,grow擴容集合長度
?}
??private void grow(int minCapacity) {
????// overflow-conscious code
????int oldCapacity = elementData.length;
????int newCapacity = oldCapacity + (oldCapacity >> 1);//集合長度的1.5倍
????if (newCapacity - minCapacity < 0)//如果新長度小于size+1
??????newCapacity = minCapacity;
????if (newCapacity - MAX_ARRAY_SIZE > 0)
??????newCapacity = hugeCapacity(minCapacity);
????// minCapacity is usually close to size, so this is a win:
????elementData = Arrays.copyOf(elementData, newCapacity);//數組拷貝,將原先數組內容拷貝到新長度的數組,再將新數組的地址賦給elementData
?}

結論:第一次添加數據的時候,數組擴容為10,以后每次擴容的時候長度為原本數組長度的1.5倍

帶參的構造可以指定數組的長度,以后再添加數據的時候避免頻繁的擴容

千鋒教育Java入門全套視頻教程(java核心技術,適合java零基礎,Java的評論 (共 條)

分享到微博請遵守國家法律
延寿县| 武邑县| 广东省| 汕尾市| 太仆寺旗| 西乡县| 五家渠市| 沅江市| 民县| 大方县| 闵行区| 竹溪县| 天峨县| 苍南县| 宁武县| 陵水| 九寨沟县| 襄樊市| 绥棱县| 北辰区| 萨嘎县| 当阳市| 噶尔县| 衡南县| 长海县| 青浦区| 梁山县| 罗城| 柘荣县| 嘉义市| 安达市| 织金县| 剑川县| 大庆市| 洪江市| 黄冈市| 新河县| 昌邑市| 洛南县| 仁布县| 八宿县|