国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java ArrayList和Vector的區(qū)別詳解

2019-11-26 13:38:03
字體:
供稿:網(wǎng)友

 ArrayList和Vector的區(qū)別

相同點(diǎn):

1、ArrayList和Vector都是繼承了相同的父類和實(shí)現(xiàn)了相同的接口

2、底層都是數(shù)組實(shí)現(xiàn)的

3、初始默認(rèn)長度都為10。

不同點(diǎn):

1、同步性:

Vector中的public方法多數(shù)添加了synchronized關(guān)鍵字,以確保方法同步,也即是Vector線程安全,ArrayList線程不安全。

2、擴(kuò)容不同

內(nèi)部屬性不同,這可能是導(dǎo)致擴(kuò)容方式不同的原因所在。

ArrayList有兩個(gè)屬性,存儲數(shù)據(jù)的數(shù)組elementData,和存儲記錄數(shù)目的size。

Vector有三個(gè)屬性,存儲數(shù)據(jù)的數(shù)組elementData,存儲記錄數(shù)目的elementCount,還有擴(kuò)展數(shù)組大小的擴(kuò)展因子capacityIncrement。

ArrayList的擴(kuò)展方法

//jdk1.8.0_91private void grow(int minCapacity) {    // overflow-conscious code    int oldCapacity = elementData.length;    int newCapacity = oldCapacity + (oldCapacity >> 1);    if (newCapacity - minCapacity < 0)      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);  }

可以看出,在滿足擴(kuò)容條件時(shí),擴(kuò)展后數(shù)組大小為原數(shù)組長度的1.5倍與傳遞參數(shù)中較大者

Vector的擴(kuò)展方法

//jdk1.8.0_91private void grow(int minCapacity) {    // overflow-conscious code    int oldCapacity = elementData.length;    int newCapacity = oldCapacity + ((capacityIncrement > 0) ?                     capacityIncrement : oldCapacity);    if (newCapacity - minCapacity < 0)      newCapacity = minCapacity;    if (newCapacity - MAX_ARRAY_SIZE > 0)      newCapacity = hugeCapacity(minCapacity);    elementData = Arrays.copyOf(elementData, newCapacity);  }

可以看出,當(dāng)擴(kuò)容因子大于0時(shí),新數(shù)組長度為原數(shù)組長度+擴(kuò)容因子,否則子新數(shù)組長度為原數(shù)組長度的2倍。 將上面生成的新數(shù)組長度與傳遞的參數(shù)長度作比較,較大者為最終的新長度。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 唐河县| 诏安县| 墨竹工卡县| 永康市| 太仆寺旗| 长垣县| 台东县| 新巴尔虎右旗| 西乡县| 年辖:市辖区| 清水河县| 罗甸县| 石景山区| 武城县| 遂宁市| 香格里拉县| 钦州市| 望江县| 芜湖县| 新昌县| 辉南县| 绥滨县| 苏尼特左旗| 铜鼓县| 樟树市| 普兰县| 衡南县| 盱眙县| 岳普湖县| 永仁县| 福州市| 宁河县| 沂源县| 两当县| 建平县| 新密市| 太仆寺旗| 武乡县| 景宁| 新河县| 堆龙德庆县|