arraylist怎么取元素 arraylist和list的區(qū)別是什么?
arraylist和list的區(qū)別是什么?ArrayList:ArrayList是一個名稱空間系統(tǒng)集合在下一部分中,您必須在使用該類時引用它。同時,它繼承了IList接口并提供數(shù)據(jù)存儲和檢索。Arra
arraylist和list的區(qū)別是什么?
ArrayList:ArrayList是一個名稱空間系統(tǒng)集合在下一部分中,您必須在使用該類時引用它。同時,它繼承了IList接口并提供數(shù)據(jù)存儲和檢索。ArrayList對象的大小根據(jù)存儲在其中的數(shù)據(jù)進(jìn)行動態(tài)擴(kuò)展和收縮。因此,在聲明ArrayList對象時不需要指定其長度。所有添加的數(shù)據(jù)都是對象,需要裝箱和解包。泛型列表:列表是一個命名空間系統(tǒng).集合.通用針對ArrayList中不安全類型和裝箱的缺點(diǎn),引入了泛型的概念。list類是ArrayList類的泛型等價物。它的大部分用法類似于ArrayList,因?yàn)閘ist類還繼承了IList接口。關(guān)鍵區(qū)別在于,在聲明列表集合時,還需要聲明列表集合中數(shù)據(jù)的對象類型。簡而言之:它們都是收藏。ArrayList類型不安全。因?yàn)樘砑拥臄?shù)據(jù)是對象類型的,所以需要對其進(jìn)行裝箱和解包,這樣效率很低。List:類型是在聲明時確定的,因此它是類型安全的,它節(jié)省了打包和解包的過程,并且比ArrayList更高效。
List和ArrayList的區(qū)別有什么區(qū)別?
列表是一個接口。ArrayList和LinkedList是兩個實(shí)現(xiàn)類。它們以不同的方式實(shí)現(xiàn)。實(shí)際上,LinkedList是真正的鏈表(如果你不知道什么是鏈表,你需要了解一些相關(guān)的數(shù)據(jù)結(jié)構(gòu),這在一兩句話中是不清楚的)。ArrayList是由array實(shí)現(xiàn)的,它不是一個真正的鏈表。當(dāng)它初始化時,它不是一個真正的鏈表,等待它為數(shù)組設(shè)置一個初始容量,當(dāng)數(shù)組空間不夠時,它會重建一個容量更大的數(shù)組,然后將以前的元素復(fù)制到。
ArrayList和LinkedList的本質(zhì)區(qū)別在于array和list之間的區(qū)別。請參考相關(guān)的數(shù)據(jù)結(jié)構(gòu)知識。
我在這里為您總結(jié)幾點(diǎn):
ArrayList:缺點(diǎn):內(nèi)存使用量大,添加和刪除元素的效率低。單元隨機(jī)存取效率高。
LinkedList:相反。
為什么是List list = new ArrayList,而不直接用ArrayList?
List是接口,ArrayList是類。
ArrayList繼承并實(shí)現(xiàn)列表。List List=new arraylist()創(chuàng)建一個arraylist對象并將其追溯到列表。此時,它是一個列表對象。不能再使用ArrayList具有但list不具有的某些屬性和方法。ArrayList=new ArrayList()創(chuàng)建一個保留ArrayList所有屬性的對象。為什么通常使用list=new arraylist()而不是arraylist=new arraylist()?問題是list有多個實(shí)現(xiàn)類,比如LinkedList或vector?,F(xiàn)在您正在使用ArrayList。也許有一天你需要切換到其他實(shí)現(xiàn)類?在這種情況下,您只需要更改這一行:List=newlinkedlist()其他使用List的代碼根本不需要更改。假設(shè)您開始使用ArrayList=new ArrayList(),您已經(jīng)做了一些更改,特別是在使用特定于ArrayList的方法和屬性時。如果沒有特殊要求,最好使用list=newlinkedlist()來促進(jìn)程序代碼的重構(gòu)。這就是面向接口編程的優(yōu)點(diǎn)