僅當(dāng)arraylist的元素存儲(chǔ)的是值類型,并且尺寸非常大(每條記錄的尺寸都可能以兆為單位)時(shí)。有必要考慮linkedlist。
而這對(duì)java來(lái)說(shuō)并不存在。因?yàn)閖ava默認(rèn)存儲(chǔ)的對(duì)象都是引用。此時(shí),哪怕全盤復(fù)制移動(dòng)arraylist的開銷也沒(méi)多少,比linked list帶來(lái)的動(dòng)態(tài)分配開銷小。
只有C++才會(huì)大量使用值類型。而只有大型的值類型才能使得linkedlist有那么一丟丟優(yōu)勢(shì)。這種代碼現(xiàn)實(shí)中非常少見。
當(dāng)然,C++其實(shí)也允許很多來(lái)自C/Java程序員把引用存儲(chǔ)在數(shù)組內(nèi)的寫法,這種情況下,C++的很多特性優(yōu)勢(shì)發(fā)揮不出來(lái),而且linked list也不會(huì)獲得性能優(yōu)勢(shì)。直接用arraylist就好。