位置:首頁 > 軟件操作教程 > 編程開發(fā) > Java > 問題詳情

Java操作應(yīng)用——Array 和ArrayList 選擇

提問人:ylm發(fā)布時(shí)間:2020-09-29

ArrayList和Array是我們?cè)趯?shí)際編程中經(jīng)常使用的容器,而且因?yàn)锳rrayList相當(dāng)于動(dòng)態(tài)化的數(shù)組,所以它們之間有太多的相似,以至于我們?cè)谶x擇哪種來存儲(chǔ)元素的時(shí)候,會(huì)有小小的迷惑,他們都有注解的優(yōu)缺點(diǎn),選擇真的取決于你的真實(shí)場(chǎng)景。

1.Array 有固定大小但 ArrayList 的大小不同。由于Array 的大小是固定的,在Array 類型變量聲明的時(shí)候,內(nèi)存被分配。因此,Array 是非??斓摹A硪环矫?, 使用ArrayList的最大缺點(diǎn)就是當(dāng)我們添加新的元素的時(shí)候,它是先檢查內(nèi)部數(shù)組的容量是否足夠,如果不夠,它會(huì)創(chuàng)建一個(gè)容量為原來數(shù)組兩倍的新數(shù)組,???后將所有元素復(fù)制到新數(shù)組里,接著拋掉舊數(shù)組。這點(diǎn)真的很麻煩,因?yàn)槊看味家@么搞,尤其是元素足夠多的時(shí)候,這就真的是既影響內(nèi)存又影響效率的問題,但通過單獨(dú)測(cè)試它們的運(yùn)行時(shí)間,發(fā)現(xiàn)其實(shí)差不多,最大的影響就是如果是有其他代碼也需要使用到內(nèi)存,那么Array依然不變,但是ArrayList就會(huì)變得慢多,相同情況下所花的時(shí)間是Array的四倍多(實(shí)際情況是遠(yuǎn)遠(yuǎn)不止)。

4.2.這是添加或刪除元素從ArrayList 比Array更容易。

4.3.數(shù)組可以多維但ArrayList只有一個(gè)維度。

4.4.ArrayList因?yàn)閮?nèi)部是一個(gè)數(shù)組,所以它是可以轉(zhuǎn)化為數(shù)組的。

4.5 兩者的適用場(chǎng)合:

List list = new ArrayList();

雖然我們想要的確實(shí)是ArrayList而不是list,但是我們知道,父類是可以獲得子類的引用并且使用子類的方法,所以這樣我們就能同時(shí)使用List和ArrayList的方法而不用害怕出錯(cuò)了。

首先,一個(gè)重要的約束就是,List的聲明區(qū)域一般是在main方法里(當(dāng)然靜態(tài)list也可以,但是我們一般使用的時(shí)候都只是當(dāng)做存儲(chǔ)元素的臨時(shí)容器),而Array是可以在外部進(jìn)行聲明的,這時(shí)它就是全局?jǐn)?shù)組。所以,單看這點(diǎn),它們的使用已經(jīng)有區(qū)別,如果想要保存一些在整個(gè)程序運(yùn)行期間都會(huì)存在而且不變的數(shù)據(jù),我們可以將它們放進(jìn)一個(gè)全局?jǐn)?shù)組里,但是如果我們單純只是想要以數(shù)組的形式保存數(shù)據(jù),方便我們進(jìn)行查找,那么,我們就選擇ArrayList。而且還有一個(gè)地方是必須知道的,就是如果我們需要對(duì)元素進(jìn)行頻繁的移動(dòng)或刪除,或者是處理的是超大量的數(shù)據(jù),那么,使用ArrayList就真的不是一個(gè)好的選擇,因?yàn)樗男屎艿?,使用?shù)組進(jìn)行這樣的動(dòng)作就很麻煩,那么,我們可以考慮選擇LinkedList。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部