linkedlist類的特點(diǎn) LinkedList和ArrayList分別什么時(shí)候用?
LinkedList和ArrayList分別什么時(shí)候用?ArrayList的底層實(shí)現(xiàn)是array,所以下標(biāo)訪問(wèn)的速度比較快,但是插入和刪除元素會(huì)有移動(dòng)元素的代價(jià),所以速度比LinkedList差。li
LinkedList和ArrayList分別什么時(shí)候用?
ArrayList的底層實(shí)現(xiàn)是array,所以下標(biāo)訪問(wèn)的速度比較快,但是插入和刪除元素會(huì)有移動(dòng)元素的代價(jià),所以速度比LinkedList差。likedlist的底層是由鏈表實(shí)現(xiàn)的,因此插入和刪除元素的時(shí)間復(fù)雜度要優(yōu)于LinkedList,但即時(shí)訪問(wèn)的效率需要遍歷元素,因此效率不如ArrayList。通常,您可以使用ArrayList。如果需要頻繁插入和刪除元素,請(qǐng)考慮使用LinkedList。此外,Java中的隊(duì)列和堆棧也依賴于LinkedList。
arraylist和linkedlist區(qū)別?
LinkedList和ArrayList的區(qū)別
1。不同的數(shù)據(jù)結(jié)構(gòu)
ArrayList是數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是link的數(shù)據(jù)結(jié)構(gòu)。
2. 效率不同
隨機(jī)訪問(wèn)列表(get和set操作)時(shí),ArrayList比LinkedList效率更高,因?yàn)長(zhǎng)inkedList是一種線性數(shù)據(jù)存儲(chǔ)模式,所以需要前后移動(dòng)指針。
添加和刪除數(shù)據(jù)(添加和刪除操作)時(shí),LinkedList比ArrayList更高效。由于ArrayList是一個(gè)數(shù)組,在其中添加和刪除操作會(huì)影響操作點(diǎn)之后所有數(shù)據(jù)的下標(biāo)索引,因此需要進(jìn)行數(shù)據(jù)移動(dòng)。
3. 不同的自由度
ArrayList的自由度比較低,因?yàn)樗枰謩?dòng)設(shè)置固定大小的容量,但是使用起來(lái)比較方便,只需要?jiǎng)?chuàng)建,然后添加數(shù)據(jù),并通過(guò)調(diào)用下標(biāo)來(lái)使用;而LinkedList的自由度比較高,可以隨數(shù)據(jù)量的變化而動(dòng)態(tài)變化,但是使用起來(lái)并不容易。