欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

 ArrayList和Vector的區(qū)別

相同點:

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

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

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

不同點:

1、同步性:

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

2、擴(kuò)容不同

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

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

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

ArrayList的擴(kuò)展方法

//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);
  }

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

Vector的擴(kuò)展方法

//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);
  }

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

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

相關(guān)文章

  • 掃二維碼自動跳轉(zhuǎn)【java】詳解

    掃二維碼自動跳轉(zhuǎn)【java】詳解

    這篇文章主要介紹了java掃二維碼自動跳轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • java接口自動化測試框架及斷言詳解

    java接口自動化測試框架及斷言詳解

    這篇文章主要介紹了java接口自動化測試框架及斷言詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 淺談Java中幾個常用集合添加元素的效率

    淺談Java中幾個常用集合添加元素的效率

    下面小編就為大家?guī)硪黄獪\談Java中幾個常用集合添加元素的效率。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java 中引入內(nèi)部類的意義?

    Java 中引入內(nèi)部類的意義?

    這篇文章主要介紹了Java 中引入內(nèi)部類的意義?文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • 詳解SpringBoot中自定義和配置攔截器的方法

    詳解SpringBoot中自定義和配置攔截器的方法

    今天這篇文章來介紹一下攔截器在SpringBoot中的如何自定義及如何配置的,攔截器的具體作用和應(yīng)用場景,感興趣的小伙伴可以了解一下
    2022-05-05
  • SpringBoot整合POI實現(xiàn)Excel文件讀寫操作

    SpringBoot整合POI實現(xiàn)Excel文件讀寫操作

    EasyExcel是一個基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具,這篇文章主要介紹了SpringBoot整合POI實現(xiàn)Excel文件讀寫操作,首先準(zhǔn)備環(huán)境進(jìn)行一系列操作,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • Java使用5個線程計算數(shù)組之和

    Java使用5個線程計算數(shù)組之和

    本文主要介紹了Java使用5個線程計算數(shù)組之和,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Arthas-java程序運行時debug工具使用

    Arthas-java程序運行時debug工具使用

    這篇文章主要介紹了Arthas-java程序運行時debug工具使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 使用自定義注解實現(xiàn)加解密及脫敏方式

    使用自定義注解實現(xiàn)加解密及脫敏方式

    這篇文章主要介紹了使用自定義注解實現(xiàn)加解密及脫敏方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java8并行流中自定義線程池操作示例

    Java8并行流中自定義線程池操作示例

    這篇文章主要介紹了Java8并行流中自定義線程池操作,結(jié)合實例形式分析了并行流的相關(guān)概念、定義及自定義線程池的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05

最新評論