這篇文章給大家分享的是有關(guān)ArrayList和Vector的區(qū)別有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)建站服務(wù)項目包括興文網(wǎng)站建設(shè)、興文網(wǎng)站制作、興文網(wǎng)頁制作以及興文網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,興文網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到興文省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
這兩個類都實現(xiàn)了 List 接口(List 接口繼承了 Collection 接口),他們都是有序集合,即存儲在這兩個集合中的元素的位置都是有順序的,相當(dāng)于一種動態(tài)的數(shù)組,我們以后可以按位置索引號取出某個元素,,并且其中的數(shù)據(jù)是允許重復(fù)的,這是 HashSet 之類的集合的最大不同處,HashSet 之類的集合不可以按索引號去檢索其中的元素,也不允許有重復(fù)的元素(本來題目問的與 hashset 沒有任何關(guān)系,但為了說清楚 ArrayList 與 Vector 的功能,我們使用對比方式,更有利于說明問題)。
接著才說 ArrayList 與 Vector 的區(qū)別,這主要包括兩個方面:.
(1)同步性:
Vector 是線程安全的,也就是說是它的方法之間是線程同步的,而 ArrayList 是線程序不安全的,它的方法之間是線程不同步的。如果只有一個線程會訪問到集合,那最好是使
用 ArrayList,因為它不考慮線程安全,效率會高些;如果有多個線程會訪問到集合,那最好是使用 Vector,因為不需要我們自己再去考慮和編寫線程安全的代碼。
備注:對于 Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問題,記住 Vector與 Hashtable 是舊的,是 java 一誕生就提供了的,它們是線程安全的,ArrayList 與 HashMap是 java2時才提供的,它們是線程不安全的。所以,我們講課時先講老的。
(2)數(shù)據(jù)增長:
ArrayList 與 Vector 都有一個初始的容量大小,當(dāng)存儲進它們里面的元素的個數(shù)超過了容量時,就需要增加 ArrayList 與 Vector 的存儲空間,每次要增加存儲空間時,不是只增
加一個存儲單元,而是增加多個存儲單元,每次增加的存儲單元的個數(shù)在內(nèi)存空間利用與程序效率之間要取得一定的平衡。Vector 默認(rèn)增長為原來兩倍,而 ArrayList 的增長策略在文檔中沒有明確規(guī)定(從源代碼看到的是增長為原來的1.5倍)。ArrayList 與 Vector 都可以設(shè)置初始的空間大小,Vector 還可以設(shè)置增長的空間大小,而 ArrayList 沒有提供設(shè)置增長空間的方法。
總結(jié):即 Vector 增長原來的一倍,ArrayList 增加原來的0.5倍。
感謝各位的閱讀!關(guān)于“ArrayList和Vector的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!