一:結構
LinkedList的底層是雙向鏈表結構(鏈表后面介紹),由于鏈表沒有將元素存儲在連續的空間中,元素存儲在單獨的節點中,然后通過引用將節點連接起來了,因此在在任意位置插入或者刪除元素時,不需要搬移元素,效率比較高。
1:LinkedList實現了List接口
2:LinkedList的底層使用了雙向鏈表
3:? LinkedList沒有實現RandomAccess接口,因此LinkedList不支持隨機訪問
4:? LinkedList的任意位置插入和刪除元素時效率比較高,時間復雜度為O(1)
5:? LinkedList比較適合任意位置插入的場景
二:實現
2.1:addFirst(頭插)
首先生成node對象,此時head節點的prev前一個節點為null,node的下一個節點為null,所以將此時head節點的prev指向node節點,將node節點的next節點指向head節點,再將head節點向前移,指向node,此時node節點就是頭節點了。
2.2:addlast(尾插)
在鏈表最后插入node對象,此時last的next節點為null,在尾部插入了一個node,所以last.next=node,然后將node節點的prev節點指向last,在將last后置last=node,此時node節點就是最后一個節點。
2.3:addIndex(插入)
與單向鏈表不同,此時findIndex方法的返回值不需要返回要插入位置的前一個節點,而是直接返回要插入位置的節點。然后通過prev與next進行變換即可。
2.4: remove(刪除指定節點)
2,5:removeAllKey(刪除所有key)?
與單一刪除相同,只不過remove刪除一個后最后就return,只要不返回然cur繼續遍歷重復執行上述代碼,直到cur==null,全部刪除完畢。