1 ArrayList和LinkedList的相同點和不同點 2 3 共同點:都是單列集合中List接口的實現類。存取有序,有索引,可重復 4 不同點: 5 1.底層實現不同: 6 ArrayList底層實現是數組,LinkedList底層是雙向鏈表,有頭尾指針。 7 8 2.ArrayList查詢快,增刪慢。 9 查詢快:數組隨機訪問,通過數組地址和元素索引計算出元素地址,進行訪問。 10 增刪慢:增刪不在尾部,都需要移動元素,如果數組容量不足,還需要擴容。(擴容非常影響效率) 11 擴容: 12 1.分配一個原數組1.5倍大小的新數組 13 2.將原數組的內容拷貝到新數組 14 15 3.LinkedList查詢慢,增刪快 16 查詢慢:從頭或尾依次尋址。 17 增刪快:只需要修改幾個指針的指向。 18 19 應用場景: 20 業務中增刪頻繁,就用LinkedList 21 業務中主要是查詢,就用ArrayList 22 23 LinkedList索引查詢的時候,是從頭開始往后找,還是從尾開始往前找? 24 答:會先做一個判斷,判斷要查找的元素距離頭部近還是尾部近,距離哪個近就從哪邊找。