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ù)組超出長度,就開始擴容數(shù)組。
擴容數(shù)組調(diào)用的方法
1
|
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)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/weixin_38422276/article/details/78978410