對ArrayList和LinkedList底層實現(xiàn)原理詳解
1、說一下 ArrayList 底層實現(xiàn)方式?
①ArrayList 通過數(shù)組實現(xiàn),一旦我們實例化 ArrayList 無參數(shù)構(gòu)造函數(shù)默認(rèn)為數(shù)組初始化長度為 10
②add 方法底層實現(xiàn)如果增加的元素個數(shù)超過了 10 個,那么 ArrayList 底層會新生成一個數(shù)組,長度為原數(shù)組的 1.5 倍+1,然后將原數(shù)組的內(nèi)容復(fù)制到新數(shù)組當(dāng)中,并且后續(xù)增加的內(nèi)容都會放到新數(shù)組當(dāng)中。當(dāng)新數(shù)組無法容納增加的元素時,重復(fù)該過程。是一旦數(shù)組超出長度,就開始擴(kuò)容數(shù)組。
擴(kuò)容數(shù)組調(diào)用的方法
Arrays.copyOf(objArr, objArr.length + 1);
2、說一下 LinkedList 底層實現(xiàn)方式?
LinkedList 底層的數(shù)據(jù)結(jié)構(gòu)是基于雙向循環(huán)鏈表的,且頭結(jié)點中不存放數(shù)據(jù),如下:

既然是雙向鏈表,那么必定存在一種數(shù)據(jù)結(jié)構(gòu)——我們可以稱之為節(jié)點,節(jié)點實例保存業(yè)務(wù)數(shù)據(jù),前一個節(jié)點的位置信息和后一個節(jié)點位置信息,如下圖所示:

以上這篇對ArrayList和LinkedList底層實現(xiàn)原理詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JAVA LinkedList和ArrayList的使用及性能分析
- 淺談 java中ArrayList、Vector、LinkedList的區(qū)別聯(lián)系
- 分析Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼
- Java中ArrayList和LinkedList的遍歷與性能分析
- 深入淺析ArrayList 和 LinkedList的執(zhí)行效率比較
- java 集合之實現(xiàn)類ArrayList和LinkedList的方法
- ArrayList和LinkedList區(qū)別及使用場景代碼解析
- java 中ArrayList與LinkedList性能比較
- Java中ArrayList和LinkedList之間的區(qū)別_動力節(jié)點Java學(xué)院整理
- Java中Array List與Linked List的實現(xiàn)分析
相關(guān)文章
Java國際化簡介_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家簡單介紹了Java國際化的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
詳解mybatis多對一關(guān)聯(lián)查詢的方式
這篇文章主要給大家介紹了關(guān)于mybatis多對一關(guān)聯(lián)查詢的相關(guān)資料,文中將關(guān)聯(lián)方式以及配置方式介紹的很詳細(xì),需要的朋友可以參考下2021-06-06
mybatis如何獲取剛剛新插入數(shù)據(jù)的主鍵值id
這篇文章主要介紹了mybatis如何獲取剛剛新插入數(shù)據(jù)的主鍵值id問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
java判斷String類型是否能轉(zhuǎn)換為int的方法

