拒絕盲目刷題!2022年度高頻經(jīng)典Java面試題總結(jié);涵蓋20+技術(shù)點(diǎn),對標(biāo)50

勵志當(dāng)最強(qiáng)課代表的我來給大家總結(jié)總結(jié)??????
2022年度高頻經(jīng)典Java面試題總結(jié)
視頻內(nèi)容:
1??問題??
2??ArrayList和LinkedList都實(shí)現(xiàn)了List接口,有以下的不同點(diǎn)??
視頻內(nèi)容:
1??問題??
ArrayList 和LinkedList的區(qū)別?

2??ArrayList和LinkedList都實(shí)現(xiàn)了List接口,有以下的不同點(diǎn)??
ArrayList是基于索引的數(shù)據(jù)接口,它的底層是數(shù)組。它可以以o(1)時間復(fù)雜度對元素進(jìn)行隨機(jī)訪問。與此對應(yīng).LinkedList是以元素列表的形式存儲它的數(shù)據(jù),每一個元素都和它的前一個和后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復(fù)雜度是O(n)。
相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因?yàn)楫?dāng)元素被添加到集合任意位置的時候,不需要像數(shù)組那樣重新計算大小或者是更新索引。
LinkedList比ArrayList更占內(nèi)存,因?yàn)長inkedList為每一個節(jié)點(diǎn)存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。
也可以參考ArrayList vs.LinkedList。
1)因?yàn)锳rray是基于索引(index)的數(shù)據(jù)結(jié)構(gòu),它使用索引在數(shù)組中搜索和讀取數(shù)據(jù)是很快的。Array獲取數(shù)據(jù)的時間復(fù)雜度是O(1),但是要刪除數(shù)據(jù)卻是開銷很大的,因?yàn)檫@需要重排數(shù)組中的所有數(shù)據(jù)。
2)相對于ArrayList,LinkedList插入是更快的。因?yàn)長inkedList不像ArrayList一樣,不需要改變數(shù)組的大小,也不需要在數(shù)組裝滿的時候要將所有的數(shù)據(jù)重新裝入一個新的數(shù)組,這是ArrayList最壞的一種情況,時間復(fù)雜度是O(n),而LinkedList 中插入或刪除的時間復(fù)雜度僅為О(1)。ArrayList在插入數(shù)據(jù)時還需要更新索引(除了插入數(shù)組的尾部)。
3)類似于插入數(shù)據(jù),刪除數(shù)據(jù)時, LinkedList也優(yōu)于ArrayList 。
4) LinkedList需要更多的內(nèi)存,因?yàn)锳rrayList 的每個索引的位置是實(shí)際的數(shù)據(jù),而LinkedList 中的每個節(jié)點(diǎn)中存儲的是實(shí)際的數(shù)據(jù)和前后節(jié)點(diǎn)的位置(一個LinkedList 實(shí)例存儲了兩個值: Node<E> first和Node<E> last分別表示鏈表的其實(shí)節(jié)點(diǎn)和尾節(jié)點(diǎn),每個Node實(shí)例存儲了三個值: E item,Node next,Node pre)。
