最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

千鋒教育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的評論 (共 條)

分享到微博請遵守國家法律
平舆县| 涪陵区| 怀安县| 黄梅县| 互助| 铜山县| 巴林左旗| 景德镇市| 渝中区| 沙河市| 葫芦岛市| 宜章县| 江川县| 华亭县| 图木舒克市| 沙田区| 梨树县| 旌德县| 定南县| 金溪县| 名山县| 元朗区| 黑山县| 钟山县| 门头沟区| 香格里拉县| 双流县| 阳高县| 十堰市| 平昌县| 称多县| 阿坝县| 林西县| 祁门县| 休宁县| 多伦县| 翁牛特旗| 田阳县| 武隆县| 延寿县| 临清市|