ArrayList的初始大小由你選定的構(gòu)造函數(shù)決定,如果你使用無參構(gòu)造函數(shù),那么初始大小為0,是一個(gè)空數(shù)組。
而如果你選用有參數(shù)的構(gòu)造函數(shù),那么初始大小為你輸入的大小
因此如果問你ArrayList的初始容量,不要直接回答10,而是回答0。
當(dāng)ArrayList存儲不下數(shù)據(jù)之后,就會發(fā)生擴(kuò)容。
對于使用無參構(gòu)造函數(shù)的ArrayList,那么初始容量是0,使用add方法添加元素之后,此時(shí)ArrayList的容量變?yōu)?0。而且我們知道,ArrayList的每次擴(kuò)容都是擴(kuò)容當(dāng)前容量的50%,也就是原本容量的1.5倍,當(dāng)然,這里的新容量并不是直接使用乘法得到的,而是通過位運(yùn)算,如下
而如果這次插入的數(shù)據(jù)量超過10了呢,也就是我一次性就直接插入了超過10個(gè)的數(shù)據(jù)怎么辦?
是10不夠然后直接擴(kuò)容一個(gè)10的1.5倍得到一個(gè)15大小的數(shù)組嘛?
下面是答案
ArrayList會根據(jù)這次插入的元素如果與下一次擴(kuò)容后大小的數(shù)組大小進(jìn)行比較,選擇一個(gè)較大值,也就是對于一個(gè)初始化的ArrayList,它下一次擴(kuò)容后的數(shù)組大小為10,而當(dāng)前插入的數(shù)據(jù)量為11,因此選擇較大者,因此此時(shí)數(shù)組的大小為11,當(dāng)然這個(gè)是由于addAll方法造成的。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:【Java】ArrayList擴(kuò)容規(guī)則-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://jinyejixie.com/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)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容