溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中的Array和ArrayList有什么區(qū)別

發(fā)布時(shí)間:2020-06-21 13:59:15 來(lái)源:億速云 閱讀:280 作者:元一 欄目:編程語(yǔ)言

數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。

Java 語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素。

你可以聲明一個(gè)數(shù)組變量,如 numbers[100] 來(lái)代替直接聲明 100 個(gè)獨(dú)立變量 number0,number1,....,number99。

ArrayList 是一個(gè)數(shù)組隊(duì)列,相當(dāng)于 動(dòng)態(tài)數(shù)組。與Java中的數(shù)組相比,它的容量能動(dòng)態(tài)增長(zhǎng)。它繼承于AbstractList,實(shí)現(xiàn)了List, RandomAccess, Cloneable, java.io.Serializable這些接口。

ArrayList 繼承了AbstractList,實(shí)現(xiàn)了List。它是一個(gè)數(shù)組隊(duì)列,提供了相關(guān)的添加、刪除、修改、遍歷等功能。
ArrayList 實(shí)現(xiàn)了RandmoAccess接口,即提供了隨機(jī)訪問(wèn)功能。RandmoAccess是java中用來(lái)被List實(shí)現(xiàn),為L(zhǎng)ist提供快速訪問(wèn)功能的。在ArrayList中,我們即可以通過(guò)元素的序號(hào)快速獲取元素對(duì)象;這就是快速隨機(jī)訪問(wèn)。稍后,我們會(huì)比較List的“快速隨機(jī)訪問(wèn)”和“通過(guò)Iterator迭代器訪問(wèn)”的效率。

列表(ArrayList)是對(duì)數(shù)組(Array)的一個(gè)加強(qiáng),分配數(shù)組列表和創(chuàng)建數(shù)組的方式如下:

分配數(shù)組列表:

new ArrayList<Employee>(100);

創(chuàng)建數(shù)組:

new Employee[100];

兩者之間的區(qū)別:

一:空間大小

1、Array的空間大小是固定的,空間不夠時(shí)也不能再次申請(qǐng),所以需要事前確定合適的空間大小。

2、ArrayList的空間是動(dòng)態(tài)增長(zhǎng)的,如果空間不夠,它會(huì)創(chuàng)建一個(gè)空間比原空間大0.5倍的新數(shù)組,然后將所有元素復(fù)制到新數(shù)組中,接著拋棄舊數(shù)組。而且,每次添加新的元素的時(shí)候都會(huì)檢查內(nèi)部數(shù)組的空間是否足夠。

二:存儲(chǔ)內(nèi)容

1、Array數(shù)組可以包含基本類型和對(duì)象類型。

2、ArrayList卻只能包含對(duì)象類型。

需要注意的是:Array數(shù)組在存放的時(shí)候一定是同種類型的元素。ArrayList就不一定了,因?yàn)锳rrayList可以存儲(chǔ)Object。

三:方法

ArrayList作為Array的增強(qiáng)版,當(dāng)然是在方法上比Array多樣化。比如添加全部addAll()、刪除全部removeAll()、返回迭代器iterator()等。

適用場(chǎng)景:

如果想要保存一些在整個(gè)程序運(yùn)行期間都會(huì)存在而且不變的數(shù)據(jù),我們可以將它們放進(jìn)一個(gè)全局?jǐn)?shù)組里,但是如果我們單純只是想要以數(shù)組的形式保存數(shù)據(jù),而不對(duì)數(shù)據(jù)進(jìn)行增加等操作,只是方便我們進(jìn)行查找的話,那么,我們就可以選擇ArrayList。

而且還有一個(gè)地方是必須知道的,就是如果我們需要對(duì)元素進(jìn)行頻繁的移動(dòng)或刪除,或者處理的是超大量的數(shù)據(jù),那么,使用ArrayList就真的不是一個(gè)好的選擇,因?yàn)樗男屎艿?,使用?shù)組進(jìn)行這樣的動(dòng)作就很麻煩,那么,我們可以考慮選擇LinkedList。

以上就是java中的數(shù)組(Array)與列表(ArrayList)的區(qū)別的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI