溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ArrayList和Vector的區(qū)別有哪些

發(fā)布時(shí)間:2021-11-03 10:40:43 來(lái)源:億速云 閱讀:128 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)ArrayList和Vector的區(qū)別有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。

這兩個(gè)類都實(shí)現(xiàn)了 List 接口(List 接口繼承了 Collection 接口),他們都是有序集合,即存儲(chǔ)在這兩個(gè)集合中的元素的位置都是有順序的,相當(dāng)于一種動(dòng)態(tài)的數(shù)組,我們以后可以按位置索引號(hào)取出某個(gè)元素,,并且其中的數(shù)據(jù)是允許重復(fù)的,這是 HashSet 之類的集合的最大不同處,HashSet 之類的集合不可以按索引號(hào)去檢索其中的元素,也不允許有重復(fù)的元素(本來(lái)題目問的與 hashset 沒有任何關(guān)系,但為了說(shuō)清楚 ArrayList 與 Vector 的功能,我們使用對(duì)比方式,更有利于說(shuō)明問題)。
接著才說(shuō) ArrayList 與 Vector 的區(qū)別,這主要包括兩個(gè)方面:.
(1)同步性:
Vector 是線程安全的,也就是說(shuō)是它的方法之間是線程同步的,而 ArrayList 是線程序不安全的,它的方法之間是線程不同步的。如果只有一個(gè)線程會(huì)訪問到集合,那最好是使
用 ArrayList,因?yàn)樗豢紤]線程安全,效率會(huì)高些;如果有多個(gè)線程會(huì)訪問到集合,那最好是使用 Vector,因?yàn)椴恍枰覀冏约涸偃タ紤]和編寫線程安全的代碼。

備注:對(duì)于 Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問題,記住 Vector與 Hashtable 是舊的,是 java 一誕生就提供了的,它們是線程安全的,ArrayList 與 HashMap是 java2時(shí)才提供的,它們是線程不安全的。所以,我們講課時(shí)先講老的。
(2)數(shù)據(jù)增長(zhǎng):
ArrayList 與 Vector 都有一個(gè)初始的容量大小,當(dāng)存儲(chǔ)進(jìn)它們里面的元素的個(gè)數(shù)超過了容量時(shí),就需要增加 ArrayList 與 Vector 的存儲(chǔ)空間,每次要增加存儲(chǔ)空間時(shí),不是只增
加一個(gè)存儲(chǔ)單元,而是增加多個(gè)存儲(chǔ)單元,每次增加的存儲(chǔ)單元的個(gè)數(shù)在內(nèi)存空間利用與程序效率之間要取得一定的平衡。Vector 默認(rèn)增長(zhǎng)為原來(lái)兩倍,而 ArrayList 的增長(zhǎng)策略在文檔中沒有明確規(guī)定(從源代碼看到的是增長(zhǎng)為原來(lái)的1.5倍)。ArrayList 與 Vector 都可以設(shè)置初始的空間大小,Vector 還可以設(shè)置增長(zhǎng)的空間大小,而 ArrayList 沒有提供設(shè)置增長(zhǎng)空間的方法。
總結(jié):即 Vector 增長(zhǎng)原來(lái)的一倍,ArrayList 增加原來(lái)的0.5倍。

感謝各位的閱讀!關(guān)于“ArrayList和Vector的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI