二開最簡單的源碼,Collection源碼分析(二):LinkedList源碼分析

 2023-10-08 阅读 27 评论 0

摘要:2019獨角獸企業重金招聘Python工程師標準>>> LinkedList 實現List<E>, Deque<E>, Cloneable, java.io.Serializable接口 二開最簡單的源碼、對于Deque解釋如下 這是一個線性的雙端隊列接口,繼承自接口Queue 下面是LinkedList的主要參數 jquery源

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

LinkedList 實現List<E>, Deque<E>, Cloneable, java.io.Serializable接口

二開最簡單的源碼、對于Deque解釋如下

170239_bUJ2_2970507.png這是一個線性的雙端隊列接口,繼承自接口Queue

下面是LinkedList的主要參數

jquery源碼分析、165502_obNP_2970507.png

first第一個節點 last最后一個節點 size 列表的長度

主要看一下add 方法

linux源碼分析、170552_t8xh_2970507.png

170602_4qvG_2970507.png

170614_Ue9k_2970507.png

安卓源碼分析、我們可以看到LinkedList添加節點的時候 是New了一個Node節點 這個節點有三個參數 item 元素

next 下一個元素 prev 上一個元素

他的一個三參構造器 將最后一個節點 作為新加的節點的前一個元素(prev)的值

新節點的下一個節點(next)賦值null

然后 將新節點賦值給last變量 更新last標識 最后size +1 (列表長度)and?modCount+1 (添加次數)

remove();

171409_zUI7_2970507.png

171427_mUhy_2970507.png

171437_1WhN_2970507.png

remove(int);

171624_f1HV_2970507.png

判斷index 是不是在size范圍之內

171654_IMQg_2970507.png

171702_GzxH_2970507.png

171750_74QG_2970507.png

總體來說 就是 如果當前節點 A 前一個節點是空 就將LinkedList得frist標識 置為A節點得next指向得節點

如果不是 則將A節點得前一個節點得next值指向 A節點得下一個節點?

當前節點 A 下一個節點是空 就將LinkedList得last標識 置為A節點得prev指向得節點

如果不是將A節點得下一個節點得 前一個節點指針(prev)指向A節點得prev節點

可以跳過上面這個四行 總的數據結構就是 一個雙向鏈表 基礎得刪除增加操作

總結:LinkedList整體結構 是以對象Node為元素 得一個雙線鏈表

對比前一章得ArrayList 我們可以看出 如果做插入操作 刪除操作 用Linkedlist會有較高得效率

對于查詢來說 通過數組下標直接訪問一般會比鏈表要快?

所以我們要更具不同的業務場景選擇合適得列表結構

?

?

?

轉載于:https://my.oschina.net/u/2970507/blog/1798006

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/130635.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息