亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

ArrayList和Vector的區(qū)別

wawor4827 / 1387人閱讀

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

相同點(diǎn):

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

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

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

不同點(diǎn):

1、同步性:

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

2、擴(kuò)容不同

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

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

Vector有三個(gè)屬性,存儲(chǔ)數(shù)據(jù)的數(shù)組elementData,存儲(chǔ)記錄數(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ò)容條件時(shí),擴(kuò)展后數(shù)組大小為(原數(shù)組長(zhǎng)度的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ù)組長(zhǎng)度為原數(shù)組長(zhǎng)度+擴(kuò)容因子,否則子新數(shù)組長(zhǎng)度為原數(shù)組長(zhǎng)度的2倍。?將上面生成的新數(shù)組長(zhǎng)度與傳遞的參數(shù)長(zhǎng)度作比較,較大者為最終的新長(zhǎng)度。

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/65228.html

相關(guān)文章

  • List集合就這么簡(jiǎn)單【源碼剖析】

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

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

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

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

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

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

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

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

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

    Coding01 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<