日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解java集合之LinkedList——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!

發布時間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解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——底层实现是头尾、双向节点,尽情地问我有没有看过集合源码吧!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。