最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年11月01日 16:24:43   作者:志哥  
這篇文章主要介紹了java ArrayList和Vector的區(qū)別詳解的相關資料,并附簡單實例代碼,需要的朋友可以參考下

 ArrayList和Vector的區(qū)別

相同點:

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

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

3、初始默認長度都為10。

不同點:

1、同步性:

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

2、擴容不同

內部屬性不同,這可能是導致擴容方式不同的原因所在。

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

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

ArrayList的擴展方法

//jdk1.8.0_91
private 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);
  }

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

Vector的擴展方法

//jdk1.8.0_91
private 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);
  }

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

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

相關文章

最新評論

来凤县| 惠来县| 乌拉特前旗| 霍林郭勒市| 大同市| 工布江达县| 宜都市| 广汉市| 绩溪县| 香港 | 三原县| 泗水县| 蒲城县| 陆良县| 镇赉县| 新邵县| 永仁县| 安平县| 桓台县| 娄底市| 新闻| 石城县| 天全县| 石屏县| 尚义县| 潼南县| 靖边县| 西宁市| 隆德县| 阿图什市| 宁夏| 锡林浩特市| 原平市| 灵寿县| 赤城县| 离岛区| 锦屏县| 中山市| 天峻县| 广东省| 新沂市|