第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Kotlin中列表和數(shù)組類型之間的區(qū)別

Kotlin中列表和數(shù)組類型之間的區(qū)別

侃侃爾雅 2019-11-08 14:19:40
List和Array類型有什么區(qū)別?似乎可以對(duì)它們進(jìn)行相同的操作(循環(huán),過(guò)濾器表達(dá)式等),行為或用法是否存在差異?val names1 = listOf("Joe","Ben","Thomas")val names2 = arrayOf("Joe","Ben","Thomas")for (name in names1)    println(name)for (name in names2)    println(name)
查看完整描述

3 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

數(shù)組和列表(由List<T>和表示其子類型MutableList<T>)有很多差異,這是最重要的:

Array<T>是具有已知實(shí)現(xiàn)的類:它是存儲(chǔ)項(xiàng)目的順序固定大小的內(nèi)存區(qū)域(在JVM上,它由Java array表示)。


List<T>并且MutableList<T>是具有不同的實(shí)現(xiàn)接口:ArrayList<T>,LinkedList<T>列表的邏輯在具體的實(shí)施,例如,定義等。存儲(chǔ)器表示和操作索引在一個(gè)LinkedList<T>穿過(guò)鏈接和需要O(n)的時(shí)間而ArrayList<T>存儲(chǔ)其在動(dòng)態(tài)分配的數(shù)組項(xiàng)。


val list1: List<Int> = LinkedList<Int>()

val list2: List<Int> = ArrayList<Int>()

Array<T>是可變的(可以通過(guò)對(duì)其的任何引用進(jìn)行更改),但是List<T>沒(méi)有修改方法(它是只讀視圖MutableList<T>或不可變列表實(shí)現(xiàn))。


val a = arrayOf(1, 2, 3)

a[0] = a[1] // OK


val l = listOf(1, 2, 3)

l[0] = l[1] // doesn't compile


val m = mutableListOf(1, 2, 3)

m[0] = m[1] // OK

數(shù)組具有固定大小,無(wú)法擴(kuò)展或縮小保留的標(biāo)識(shí)(您需要復(fù)制數(shù)組以調(diào)整其大?。?。對(duì)于列表,MutableList<T>具有add和remove功能,以便可以增加和減小其大小。


val a = arrayOf(1, 2, 3)

println(a.size) // will always be 3 for this array


val l = mutableListOf(1, 2, 3)

l.add(4)

println(l.size) // 4

Array<T>在T(Array<Int>not Array<Number>)上是不變的,與相同MutableList<T>,但是List<T>是協(xié)變(List<Int>is List<Number>)。


val a: Array<Number> = Array<Int>(0) { 0 } // won't compile

val l: List<Number> = listOf(1, 2, 3) // OK

陣列被用于原語(yǔ)優(yōu)化:有分離IntArray,DoubleArray,CharArray等,它們被映射到Java原始陣列(int[],double[],char[]),不盒裝那些(Array<Int>被映射到Java的Integer[])。列表通常沒(méi)有針對(duì)基元進(jìn)行優(yōu)化的實(shí)現(xiàn),盡管某些庫(kù)(JDK外部)提供了基元優(yōu)化的列表。


List<T>并且MutableList<T>是映射類型,并且在Java互操作性方面具有特殊行為(List<T>從Kotlin中將Java 視為L(zhǎng)ist<T>或MutableList<T>)。數(shù)組也被映射,但是它們具有Java互操作性的其他規(guī)則。


注釋中使用了某些數(shù)組類型(原始數(shù)組Array<String>和帶有enum class條目的數(shù)組),并且注釋具有特殊的數(shù)組文字語(yǔ)法。列表和其他集合不能在注釋中使用。


至于用法,優(yōu)良作法是在代碼的性能關(guān)鍵部分以外的任何地方都使用列表而不是數(shù)組,其理由與Java相同。


查看完整回答
反對(duì) 回復(fù) 2019-11-08
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

與用法方面的主要區(qū)別在于,數(shù)組具有固定的大小,同時(shí)(Mutable)List可以動(dòng)態(tài)調(diào)整其大小。而且Array是可變的而List不是可變的。


此外,kotlin.collections.List還通過(guò)來(lái)實(shí)現(xiàn)一個(gè)接口java.util.ArrayList。kotlin.collections.MutableList當(dāng)需要收集允許進(jìn)行項(xiàng)目修改的集合時(shí),也可以使用它。


在jvm級(jí)別Array上,由arrays表示。List另一方面,java.util.List由于Java中沒(méi)有不可變的集合等效項(xiàng),因此用表示。


查看完整回答
反對(duì) 回復(fù) 2019-11-08
?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

**一般,列表和數(shù)組類型之間的區(qū)別是:**


List<...>:

僅供閱讀。


Array<...>:

您可以修改它,或添加一些東西。


查看完整回答
反對(duì) 回復(fù) 2019-11-08
  • 3 回答
  • 0 關(guān)注
  • 1829 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)