我必須實現(xiàn)一種算法,該算法始終將條目插入最后并從第一個位置刪除條目。他們說“ArrayList 存儲在內(nèi)存中的連續(xù)空間中。這允許操作系統(tǒng)使用優(yōu)化,例如“當(dāng)訪問內(nèi)存中的一個字節(jié)時,很可能很快就會訪問下一個字節(jié)”。因此,ArrayList 是總比 LinkedList 快”但一種情況:在列表開頭插入/刪除元素時(因為必須移動數(shù)組中的所有元素)。在 ArrayList 的情況下,在末尾或中間添加/刪除、迭代、訪問元素都更快。在我的算法中,總是刪除第一個元素。所以,總是發(fā)生移位。在這種情況下,我不應(yīng)該使用數(shù)組列表??
1 回答

滄海一幻覺
TA貢獻1824條經(jīng)驗 獲得超5個贊
這實際上取決于您希望對結(jié)構(gòu)做些什么。
如果大多數(shù)時候您只是在最后添加并從開始刪除,那么Deque 的任何實現(xiàn)都可以。所以ArrayDeque或LinkedList可能是你最好的候選人。
ArrayDeque
由數(shù)組支持,因此可以通過具有O(1)
復(fù)雜性的索引快速訪問,但它的缺點是添加速度可能比LinkedList
有時需要調(diào)整支持?jǐn)?shù)組的大小要慢。
LinkedList
只是一個鏈表,所以它一直在增長/縮小,O(1)
但通過索引訪問并不是因為找到nth
條目是O(n)
.
添加回答
舉報
0/150
提交
取消