對(duì)ArrayList和LinkedList底層實(shí)現(xiàn)原理詳解
1、說(shuō)一下 ArrayList 底層實(shí)現(xiàn)方式?
①ArrayList 通過(guò)數(shù)組實(shí)現(xiàn),一旦我們實(shí)例化 ArrayList 無(wú)參數(shù)構(gòu)造函數(shù)默認(rèn)為數(shù)組初始化長(zhǎng)度為 10
②add 方法底層實(shí)現(xiàn)如果增加的元素個(gè)數(shù)超過(guò)了 10 個(gè),那么 ArrayList 底層會(huì)新生成一個(gè)數(shù)組,長(zhǎng)度為原數(shù)組的 1.5 倍+1,然后將原數(shù)組的內(nèi)容復(fù)制到新數(shù)組當(dāng)中,并且后續(xù)增加的內(nèi)容都會(huì)放到新數(shù)組當(dāng)中。當(dāng)新數(shù)組無(wú)法容納增加的元素時(shí),重復(fù)該過(guò)程。是一旦數(shù)組超出長(zhǎng)度,就開(kāi)始擴(kuò)容數(shù)組。
擴(kuò)容數(shù)組調(diào)用的方法
Arrays.copyOf(objArr, objArr.length + 1);
2、說(shuō)一下 LinkedList 底層實(shí)現(xiàn)方式?
LinkedList 底層的數(shù)據(jù)結(jié)構(gòu)是基于雙向循環(huán)鏈表的,且頭結(jié)點(diǎn)中不存放數(shù)據(jù),如下:
既然是雙向鏈表,那么必定存在一種數(shù)據(jù)結(jié)構(gòu)——我們可以稱之為節(jié)點(diǎn),節(jié)點(diǎn)實(shí)例保存業(yè)務(wù)數(shù)據(jù),前一個(gè)節(jié)點(diǎn)的位置信息和后一個(gè)節(jié)點(diǎn)位置信息,如下圖所示:
以上這篇對(duì)ArrayList和LinkedList底層實(shí)現(xiàn)原理詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JAVA LinkedList和ArrayList的使用及性能分析
- 淺談 java中ArrayList、Vector、LinkedList的區(qū)別聯(lián)系
- 分析Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼
- Java中ArrayList和LinkedList的遍歷與性能分析
- 深入淺析ArrayList 和 LinkedList的執(zhí)行效率比較
- java 集合之實(shí)現(xiàn)類(lèi)ArrayList和LinkedList的方法
- ArrayList和LinkedList區(qū)別及使用場(chǎng)景代碼解析
- java 中ArrayList與LinkedList性能比較
- Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java中Array List與Linked List的實(shí)現(xiàn)分析
相關(guān)文章
InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決
這篇文章主要介紹了InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java基礎(chǔ)之內(nèi)部類(lèi)與代理知識(shí)總結(jié)
今天帶大家復(fù)習(xí)Java的基礎(chǔ)知識(shí),文中有非常詳細(xì)的介紹及圖文示例,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06maven模塊化開(kāi)發(fā)部署實(shí)現(xiàn)方案
有些用戶有定制化需求,需要添加新的模塊功能,因此需要平臺(tái)主體功能迭代的同時(shí),非主體功能和定制化功能插件化,本文給大家介紹maven模塊化開(kāi)發(fā)部署實(shí)現(xiàn)方案,感興趣的朋友一起看看吧2024-01-01Spring-AOP @AspectJ切點(diǎn)函數(shù)之@annotation()用法
這篇文章主要介紹了Spring-AOP @AspectJ切點(diǎn)函數(shù)之@annotation()用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07解決myBatis中openSession()自動(dòng)提交的問(wèn)題
在學(xué)習(xí)MySQL過(guò)程中,發(fā)現(xiàn)插入操作自動(dòng)提交,問(wèn)題原因可能是myBatis中的openSession()方法設(shè)置了自動(dòng)提交,或者是MySQL的默認(rèn)引擎設(shè)置為不支持事務(wù)的MyISAM,解決辦法包括更改myBatis的提交設(shè)置或?qū)ySQL表的引擎改為InnoDB2024-09-09簡(jiǎn)單了解java類(lèi)型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤
這篇文章主要介紹了簡(jiǎn)單了解java類(lèi)型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04使用java8 API遍歷過(guò)濾文件目錄及子目錄和隱藏文件示例詳解
這篇文章主要介紹了使用java8API遍歷過(guò)濾文件目錄及子目錄及隱藏文件示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07