當(dāng)前位置:
首頁(yè) >
Java-ArrayList和Vector的区别
發(fā)布時(shí)間:2023/12/10
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Java-ArrayList和Vector的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這兩個(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)題目問(wèn)的與hashset沒(méi)有任何關(guān)系,但為了說(shuō)清楚ArrayList與Vector的功能,我們使用對(duì)比方式,更有利于說(shuō)明問(wèn)題)。
接著才說(shuō)ArrayList與Vector的區(qū)別,這主要包括兩個(gè)方面:. (1)同步性:
Vector是線程安全的,也就是說(shuō)是它的方法之間是線程同步的,而ArrayList是線程序不安全的,它的方法之間是線程不同步的。如果只有一個(gè)線程會(huì)訪問(wèn)到集合,那最好是使用ArrayList,因?yàn)樗豢紤]線程安全,效率會(huì)高些;如果有多個(gè)線程會(huì)訪問(wèn)到集合,那最好是使用Vector,因?yàn)椴恍枰覀冏约涸偃タ紤]和編寫線程安全的代碼。
備注:對(duì)于Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問(wèn)題,記住Vector與Hashtable是舊的,是java一誕生就提供了的,它們是線程安全的,ArrayList與HashMap是java2時(shí)才提供的,它們是線程不安全的。所以,我們講課時(shí)先講老的。(2)數(shù)據(jù)增長(zhǎng):
ArrayList與Vector都有一個(gè)初始的容量大小,當(dāng)存儲(chǔ)進(jìn)它們里面的元素的個(gè)數(shù)超過(guò)了容量時(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)策略在文檔中沒(méi)有明確規(guī)定(從源代碼看到的是增長(zhǎng)為原來(lái)的1.5倍)。ArrayList與Vector都可以設(shè)置初始的空間大小,Vector還可以設(shè)置增長(zhǎng)的空間大小,而ArrayList沒(méi)有提供設(shè)置增長(zhǎng)空間的方法。
總結(jié):即Vector增長(zhǎng)原來(lái)的一倍,ArrayList增加原來(lái)的0.5倍。
接著才說(shuō)ArrayList與Vector的區(qū)別,這主要包括兩個(gè)方面:. (1)同步性:
Vector是線程安全的,也就是說(shuō)是它的方法之間是線程同步的,而ArrayList是線程序不安全的,它的方法之間是線程不同步的。如果只有一個(gè)線程會(huì)訪問(wèn)到集合,那最好是使用ArrayList,因?yàn)樗豢紤]線程安全,效率會(huì)高些;如果有多個(gè)線程會(huì)訪問(wèn)到集合,那最好是使用Vector,因?yàn)椴恍枰覀冏约涸偃タ紤]和編寫線程安全的代碼。
備注:對(duì)于Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問(wèn)題,記住Vector與Hashtable是舊的,是java一誕生就提供了的,它們是線程安全的,ArrayList與HashMap是java2時(shí)才提供的,它們是線程不安全的。所以,我們講課時(shí)先講老的。(2)數(shù)據(jù)增長(zhǎng):
ArrayList與Vector都有一個(gè)初始的容量大小,當(dāng)存儲(chǔ)進(jìn)它們里面的元素的個(gè)數(shù)超過(guò)了容量時(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)策略在文檔中沒(méi)有明確規(guī)定(從源代碼看到的是增長(zhǎng)為原來(lái)的1.5倍)。ArrayList與Vector都可以設(shè)置初始的空間大小,Vector還可以設(shè)置增長(zhǎng)的空間大小,而ArrayList沒(méi)有提供設(shè)置增長(zhǎng)空間的方法。
總結(jié):即Vector增長(zhǎng)原來(lái)的一倍,ArrayList增加原來(lái)的0.5倍。
轉(zhuǎn)載于:https://www.cnblogs.com/hwaggLee/p/4510640.html
總結(jié)
以上是生活随笔為你收集整理的Java-ArrayList和Vector的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 也谈云计算
- 下一篇: Java中文乱码问题(转)