課程
/后端開發(fā)
/Java
/Java入門第三季
請問這個是什么意思? ? 為什么要New一個ArrayList
2019-08-07
源自:Java入門第三季 4-9
正在回答
初始化,你可以理解成創(chuàng)建一個火車頭,不然沒有火車頭的話后面的車廂都接不上去
ArrayList源碼中最重要的就是數(shù)組的擴(kuò)容,你知道數(shù)組一旦創(chuàng)建就不能改變?nèi)萘苛耍荓ist集合可以隨便添加多少元素,那么用數(shù)組怎么實現(xiàn)list的呢,就是system.copy方法,復(fù)制!創(chuàng)建一個新的數(shù)組,默認(rèn)長度是原數(shù)組的1.5倍,不夠再擴(kuò)1.5倍,直到達(dá)到Integer.MAX_VALUE為止,然后把原數(shù)組復(fù)制到新數(shù)組,這個復(fù)制可以指定索引,就是你可以指定從哪兒開始復(fù)制,復(fù)制在什么位置。搞懂這個基本上arraylist的方法就全搞懂了,比如刪除Arr=[1,2,3,4,5]中的3就是把4后面的長度-3個元素復(fù)制到3的位置就完事了,如下。
System.arraycopy(Arr,?3,?Arr,?4,?size-3)
對不起,我解釋錯了,LinkList才是火車頭,new ArrayList()是創(chuàng)建一個地址,此時只是一個空指針,當(dāng)調(diào)用add()方法的時候才會在堆內(nèi)存創(chuàng)建一個長度為10的數(shù)組,add達(dá)到數(shù)組容量上限就自動增長1.5倍,new ArrayList(5)帶了參數(shù)5,會初始化的時候就創(chuàng)建一個長度為5的數(shù)組??傊瓵rrayList實際上就是一個數(shù)組。為了這個問題我看了三天源碼!
qq_慕沐4213791 提問者
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答java的ArrayList類的問題
1 回答看了List ArrayList 的問題
1 回答 this.coursesToSelect = new ArrayList();
4 回答ArrayList實例化?
4 回答List與Arraylist
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-08-07
初始化,你可以理解成創(chuàng)建一個火車頭,不然沒有火車頭的話后面的車廂都接不上去
2019-08-14
ArrayList源碼中最重要的就是數(shù)組的擴(kuò)容,你知道數(shù)組一旦創(chuàng)建就不能改變?nèi)萘苛耍荓ist集合可以隨便添加多少元素,那么用數(shù)組怎么實現(xiàn)list的呢,就是system.copy方法,復(fù)制!創(chuàng)建一個新的數(shù)組,默認(rèn)長度是原數(shù)組的1.5倍,不夠再擴(kuò)1.5倍,直到達(dá)到Integer.MAX_VALUE為止,然后把原數(shù)組復(fù)制到新數(shù)組,這個復(fù)制可以指定索引,就是你可以指定從哪兒開始復(fù)制,復(fù)制在什么位置。搞懂這個基本上arraylist的方法就全搞懂了,比如刪除Arr=[1,2,3,4,5]中的3就是把4后面的長度-3個元素復(fù)制到3的位置就完事了,如下。
2019-08-14
對不起,我解釋錯了,LinkList才是火車頭,new ArrayList()是創(chuàng)建一個地址,此時只是一個空指針,當(dāng)調(diào)用add()方法的時候才會在堆內(nèi)存創(chuàng)建一個長度為10的數(shù)組,add達(dá)到數(shù)組容量上限就自動增長1.5倍,new ArrayList(5)帶了參數(shù)5,會初始化的時候就創(chuàng)建一個長度為5的數(shù)組??傊瓵rrayList實際上就是一個數(shù)組。為了這個問題我看了三天源碼!