详解java集合之LinkedList——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!
LinkedList底層實現——頭尾、雙向節點
??
LinkedList的類繼承結構圖
?
1. LinkedList對象的創建
1.1 參數為空的構造方法的方法體為空。
1.2 Collection對象作為參數的構造方法——將Collection集合對象的元素添加至LinkedList中。
?
2. LinkedList添加元素
2.1 鏈表添加元素通過將節點連接進去即可,主要有四個方法,如下圖。
2.2 上述添加元素的四種方法,其實底層實現對應的是三類:linkFirst,新節點作為首節點;linkBefore,新節點在鏈表中;linkLast,新節點作為尾結點。
2.3?然后,默認的add方法是調用linkLast方法,將新節點添加到鏈表尾部的。
?
3. LinkedList移除節點
3.1 LinkedList移除節點,也是直接通過指針指向,直接移除即可,主要有五個方法,如下圖。
3.2 五種方法,其實底層實現主要是unlinkFirst,unlink,unlinkLast。
??
3.3 默認的remove方法是調用removeFirst方法,也就是移除鏈表的首節點,所以LinkedList是一種先入先出的方式。
?
4. 通過get或set方法獲取某個索引的元素或者更改某個索引元素,主要通過node方法查找索引節點。平常說鏈表查詢慢、數組查詢快,其實查詢指定位,也就是根據索引定位元素,數組直接根據索引取出元素,而鏈表需要一個一個節點遍歷。
??
?
5. indexOf或者contains方法查找是否包含某個元素,使用的equals比較。
?
6. LinkedList的其它常用方法
6.1 LinkedList的性質讓它對節點操作方式和隊列一樣,而且它實現了雙端隊列Deque接口,所以有一些隊列的操作方法,主要是poll、offer以及peek方法,如下。
??
6.2 clear方法清空鏈表,我們可能認為將first和last節點置為null即可。但是事實上,為了確保鏈表的各節點能夠被釋放以及垃圾回收器回收,還是會對每個節點處理,如下。
總結
以上是生活随笔為你收集整理的详解java集合之LinkedList——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Integer及String的equal
- 下一篇: 详解集合之HashMap——HashMa