成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ArrayList和Vector的區(qū)別

wawor4827 / 1359人閱讀

摘要:擴(kuò)容不同內(nèi)部屬性不同,這可能是導(dǎo)致擴(kuò)容方式不同的原因所在。有兩個屬性,存儲數(shù)據(jù)的數(shù)組,和存儲記錄數(shù)目的。將上面生成的新數(shù)組長度與傳遞的參數(shù)長度作比較,較大者為最終的新長度。

相同點:

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ù)長度作比較,較大者為最終的新長度。

微信公眾號:志哥 (ID: zhige-me)
期待與你相遇,一同成長前行!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65228.html

相關(guān)文章

  • List集合就這么簡單【源碼剖析】

    摘要:線程不安全底層數(shù)據(jù)結(jié)構(gòu)是鏈表。的默認(rèn)初始化容量是,每次擴(kuò)容時候增加原先容量的一半,也就是變?yōu)樵瓉淼谋秳h除元素時不會減少容量,若希望減少容量則調(diào)用它不是線程安全的。 前言 聲明,本文用得是jdk1.8 前一篇已經(jīng)講了Collection的總覽:Collection總覽,介紹了一些基礎(chǔ)知識。 現(xiàn)在這篇主要講List集合的三個子類: ArrayList 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組。線程不安全 ...

    cpupro 評論0 收藏0
  • Week 2 - Java 容器 - 詳細(xì)剖析 List 之 ArrayList, Vector,

    摘要:底層使用的是雙向鏈表數(shù)據(jù)結(jié)構(gòu)之前為循環(huán)鏈表,取消了循環(huán)??焖匐S機(jī)訪問就是通過元素的序號快速獲取元素對象對應(yīng)于方法。而接口就是用來標(biāo)識該類支持快速隨機(jī)訪問。僅僅是起標(biāo)識作用。,中文名為雙端隊列。不同的是,是線程安全的,內(nèi)部使用了進(jìn)行同步。 前言 學(xué)習(xí)情況記錄 時間:week 2 SMART子目標(biāo) :Java 容器 記錄在學(xué)習(xí)Java容器 知識點中,關(guān)于List的需要重點記錄的知識點。...

    MartinDai 評論0 收藏0
  • Java編程基礎(chǔ)16——Colletion集合

    摘要:集合的長度的是可變的,可以根據(jù)元素的增加而增長。如果元素個數(shù)不是固定的推薦用集合。線程安全,效率低。相對查詢慢線程安全的相對增刪慢數(shù)組結(jié)構(gòu)底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。線程不安全,效率高。 1_對象數(shù)組的概述和使用 A:案例演示 需求:我有5個學(xué)生,請把這個5個學(xué)生的信息存儲到數(shù)組中,并遍歷數(shù)組,獲取得到每一個學(xué)生信息。 import net.allidea.bean.Stu...

    TerryCai 評論0 收藏0
  • java 編程思想 - Chapter11&Chapter17- 不同容器之間比較

    摘要:中所有方法都是直接或者間接同步的,所以是線程安全的即多個線程操作同一個對象時是線程安全的,但是只有一個線程操作時考慮到同步控制會耗費系統(tǒng)資源所以效率低。中的所有方法都是線程非同步的,但有多個線程操作時是不安全的。 雖是讀書筆記,但是如轉(zhuǎn)載請注明出處http://segmentfault.com/blog/exploring/ ..拒絕伸手復(fù)制黨 容器之間的區(qū)別通常歸結(jié)為:由什么在背...

    imtianx 評論0 收藏0
  • 關(guān)于java集合框架總結(jié)

    摘要:是哈希表實現(xiàn)的,中的數(shù)據(jù)是無序的,可以放入,但只能放入一個,兩者中的值都不能重復(fù),就如數(shù)據(jù)庫中唯一約束。四和的相同點和區(qū)別相同兩者都是基于哈希表實現(xiàn)的內(nèi)部也都是通過單鏈表解決沖突問題同樣實現(xiàn)了序列化和克隆接口區(qū)別繼承的父類不同。 一.Arraylist與LinkedList有什么區(qū)別? 1、ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),因為地址連續(xù),一旦數(shù)據(jù)存儲好了,查詢操作效率...

    Coding01 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<