arraylist 底層是用陣列實現的儲存。
特點:add()
先確保陣列有足夠的容量存放元素:ensurecapacityinternal(int mincapacity)
先計算本次add需要的容量:calculatecapacity(object elementdata, int mincapacity)
有兩種情況:
若arraylist是通過無參構造產生的,需要進入if判斷,預設初始化的大小是10,返回預設初始化大小和需要的陣列大小中較大的那個
否則直接返回需要的容量
確保陣列能存放上一步calculatecapacity
計算的容量:ensurecapacityinternal(int mincapacity)
若要求的容量大於當前陣列長度,則進行擴容
擴容函式:grow(int mincapacity)
通過newcapacity = oldcapacity + (oldcapacity >> 1)
1.5倍擴容原陣列,若擴容後的陣列大小還是小於需要的容量,則直接將需要的容量作為新陣列大小
若新陣列大小 大於 最大陣列大小,呼叫hugecapacity(mincapacity);
進行擴容
若 mincapacity 溢位丟擲異常
否則返回 integer.max_value
若新陣列大小 不大於 最大陣列大小,直接呼叫arrays.copyof(elementdata, newcapacity);
對陣列進行擴容後移動資料並返回新陣列給elementdata
學習心得 python學習心得
自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...
學習心得 我的學習心得
我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...
Spring學習心得
不看不知道,一看便學到,會不會與您產生共鳴呢?喜歡再捧場拍磚 spring使用從一年前開始,邊學習邊開發。這裡講講我的學習心得。第一條 記住ioc就是spring的一切。而掌握ioc的唯一方法就是使用和思考。spring是ioc為核心的,所以第一步就是要深刻理解ioc,最好是能盡快把ioc作為教條式...