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

Java操作應用——Array 和ArrayList 選擇

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

ArrayList和Array是我們在實際編程中經常使用的容器,而且因為ArrayList相當于動態(tài)化的數(shù)組,所以它們之間有太多的相似,以至于我們在選擇哪種來存儲元素的時候,會有小小的迷惑,他們都有注解的優(yōu)缺點,選擇真的取決于你的真實場景。

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

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

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

4.4.ArrayList因為內部是一個數(shù)組,所以它是可以轉化為數(shù)組的。

4.5 兩者的適用場合:

List list = new ArrayList();

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

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

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

相關視頻回答
回復(0)
返回頂部