前后端怎么實(shí)現(xiàn)交互 ArrayList和LinkedList都是線程安全的嗎?
ArrayList和LinkedList都是線程安全的嗎?所有都是線程安全的。ArrayList和LinkedList的區(qū)別及其優(yōu)缺點(diǎn)ArrayList和LinkedList的一般區(qū)別如下:Array
ArrayList和LinkedList都是線程安全的嗎?
所有都是線程安全的。
ArrayList和LinkedList的區(qū)別及其優(yōu)缺點(diǎn)ArrayList和LinkedList的一般區(qū)別如下:ArrayList是基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是基于鏈表的數(shù)據(jù)結(jié)構(gòu)。對(duì)于獲取和設(shè)置的隨機(jī)訪問(wèn),ArrayList優(yōu)于LinkedList,因?yàn)長(zhǎng)inkedList移動(dòng)指針。對(duì)于添加和刪除操作,linedlist更有優(yōu)勢(shì),因?yàn)锳rrayList移動(dòng)數(shù)據(jù)。
1、同步ArrayList、LinkedList不同步,vestor同步。因此,如果不需要線程安全,可以使用ArrayList或LinkedList來(lái)節(jié)省同步成本。但是在多線程的情況下,有時(shí)我們不得不使用向量。當(dāng)然,ArrayList和LinkedList也可以通過(guò)某些方式進(jìn)行打包以同步它們,但是效率可能會(huì)降低。
2、在數(shù)據(jù)增長(zhǎng)的內(nèi)部實(shí)現(xiàn)機(jī)制方面,ArrayList和vector以objec數(shù)組的形式存儲(chǔ)。向這兩種類型添加元素時(shí),如果元素的數(shù)量超過(guò)內(nèi)部數(shù)組的當(dāng)前長(zhǎng)度,則需要擴(kuò)展內(nèi)部數(shù)組的長(zhǎng)度。默認(rèn)情況下,Vector會(huì)自動(dòng)將原始數(shù)組的長(zhǎng)度加倍,ArrayList是原始數(shù)組的50%,因此最終集合所占用的空間始終大于您所需的空間。因此,如果要在集合中存儲(chǔ)大量數(shù)據(jù),vector有一些優(yōu)點(diǎn),因?yàn)榭梢栽O(shè)置集合的初始化大小以避免不必要的資源開(kāi)銷。
3、在ArrayList和vector中檢索、插入和刪除對(duì)象的效率,從指定位置檢索對(duì)象(使用索引)或在集合末尾插入或刪除對(duì)象的時(shí)間是相同的,可以表示為O(1)。但是,如果從集合的其他部分添加或刪除元素,所花費(fèi)的時(shí)間將線性增加:O(n-i),其中n表示集合中元素的數(shù)量,i表示添加或刪除的元素的索引位置。為什么?執(zhí)行上述操作時(shí),集合中第i個(gè)和第i個(gè)元素之后的所有元素都必須執(zhí)行(n-i)對(duì)象的置換操作。在LinkedList中,在集合中的任何位置插入和刪除元素需要相同的時(shí)間-O(1),但索引元素(即O(I))的速度較慢,其中I是索引的位置。
linkedlist線程安全嗎?
并不是LinkedList不是線程安全的。列表接口中的ArrayList和LinkedList不是線程安全的。向量是線程安全的