【Java】ArrayList擴容規(guī)則-創(chuàng)新互聯(lián)

文章目錄
  • 初始大小
  • 擴容規(guī)則
  • 總結(jié)

創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋成都柔性防護網(wǎng)等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。初始大小

ArrayList的初始大小由你選定的構(gòu)造函數(shù)決定,如果你使用無參構(gòu)造函數(shù),那么初始大小為0,是一個空數(shù)組。
在這里插入圖片描述
而如果你選用有參數(shù)的構(gòu)造函數(shù),那么初始大小為你輸入的大小
在這里插入圖片描述
因此如果問你ArrayList的初始容量,不要直接回答10,而是回答0。

擴容規(guī)則

當ArrayList存儲不下數(shù)據(jù)之后,就會發(fā)生擴容。
對于使用無參構(gòu)造函數(shù)的ArrayList,那么初始容量是0,使用add方法添加元素之后,此時ArrayList的容量變?yōu)?0。而且我們知道,ArrayList的每次擴容都是擴容當前容量的50%,也就是原本容量的1.5倍,當然,這里的新容量并不是直接使用乘法得到的,而是通過位運算,如下
在這里插入圖片描述
而如果這次插入的數(shù)據(jù)量超過10了呢,也就是我一次性就直接插入了超過10個的數(shù)據(jù)怎么辦?
是10不夠然后直接擴容一個10的1.5倍得到一個15大小的數(shù)組嘛?
下面是答案
在這里插入圖片描述
ArrayList會根據(jù)這次插入的元素如果與下一次擴容后大小的數(shù)組大小進行比較,選擇一個較大值,也就是對于一個初始化的ArrayList,它下一次擴容后的數(shù)組大小為10,而當前插入的數(shù)據(jù)量為11,因此選擇較大者,因此此時數(shù)組的大小為11,當然這個是由于addAll方法造成的。
在這里插入圖片描述

總結(jié)
  • ArrayList()會使用長度為零的數(shù)組
  • ArrayList(int initialCapacity)會使用指定容量的數(shù)組
  • public ArrayList(Collectionc)會使用c的大小作為數(shù)組容量
  • add(Object o)首次擴容為10,再次擴容為上次容量的1.5倍
  • addAll(Collection c)在沒有元素時,擴容為Math.max(10,實際元素個數(shù))
    有元素時為Math.max(原容量1.5倍,實際元素個數(shù))

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:【Java】ArrayList擴容規(guī)則-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://muchs.cn/article6/eehog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)站策劃、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站