Kotlin-數(shù)組與集合-List

Kotlin 的List分為 可變的不可變的 兩種

聲明和創(chuàng)建 List

  1. listOf(): List<T>
    該函數(shù)返回不可變的List集合,包含null(Kotlin 1.1 返回的是 java.util.Arrays$ArrayList
  2. listOfNotNull(): List<T>
    該函數(shù)返回不可變的List集合,不包含null(Kotlin 1.1 返回的是 java.util.ArrayList
  3. mutableListOf(): MutableList<T>
    該函數(shù)返回可變的MutableList集合
  4. arrayListOf(): ArrayList<T>
    該函數(shù)返回可變的ArrayList集合
val list1 = listOf("Java", "Kotlin", null, "Go")
println(list1) //[Java, Kotlin, null, Go]
println("listOf() 返回的對象實例類型是:${list1.javaClass}") //listOf() 返回的對象實例類型是:class java.util.Arrays$ArrayList
val list2 = listOfNotNull("Java", "Kotlin", null, "Go")
println(list2) //[Java, Kotlin, Go]
println("listOfNotNull() 返回的對象實例類型是:${list2.javaClass}") //listOfNotNull() 返回的對象實例類型是:class java.util.ArrayList
val mutableList = mutableListOf("Java", "kotlin", null, "Go")
println(mutableList) //[Java, kotlin, null, Go]
println("mutableListOf() 返回的對象實例類型是:${mutableList.javaClass}") //mutableListOf() 返回的對象實例類型是:class java.util.ArrayList
val arrayList = arrayListOf("Java", "Kotlin", null, "Go")
println(arrayList) //[Java, Kotlin, null, Go]
println("arrayListOf() 返回的對象實例類型是:${arrayList.javaClass}") //arrayListOf() 返回的對象實例類型是:class java.util.ArrayList

注意:如果期望使用ArrayList的話,最好使用arrayListOf(),而不要使用mutableListOf(),以免 Kotlin 底層修改邏輯導(dǎo)致程序出現(xiàn)bug


使用 List 中的方法

  1. get(): E / []: E
    訪問集合元素
  2. indexOf(): Int
    返回集合元素在 List 中的索引
  3. lastIndexOf(): Int
    返回集合元素在 List 中最后一次出現(xiàn)的位置
  4. subList(): List<E>
    返回 List 集合的子集合
val list = listOf("Java", "Kotlin", null, "Go", "Java")
// 使用 get 方法,或 [] 訪問集合元素(因為 get 方法是由 operator 關(guān)鍵字修飾的)
println(list.get(1)) //Kotlin
println(list[1]) //Kotlin

// 返回集合元素在 List 中的索引
println(list.indexOf("Java")) //0

// 返回集合元素在 List 中最后一次出現(xiàn)的位置
println(list.lastIndexOf("Java")) //4

// 返回 List 集合的子集合
println(list.subList(1, 3)) //[Kotlin, null]

List 的遍歷

  1. for(item in list) { ... }
    for-in 遍歷,遍歷元素
  2. for(index in list.indices) { ... }
    for-in 遍歷,遍歷下標(biāo)
  3. for ((index, item) in list.withIndex()) { ... }
    withIndex() 方法返回一個 Iterable 對象,該對象的所有元素都是 IndexedValue
  4. list.forEach { ... }
    forEach Lambda 表達(dá)式遍歷
val list = listOf("Java", "Kotlin", null, "Go")
// for-in 遍歷,遍歷元素
for (item in list) {
    println(item)
}

// for-in 遍歷,遍歷下標(biāo)
for (index in list.indices) {
    println(list[index])
}

// for-in 遍歷,使用 withIndex
for ((index, item) in list.withIndex()) {
    println("第 $index 個元素是 $item")
}

// forEach Lambda 表達(dá)式遍歷
list.forEach {
    println(it)
}

可變 List 的添加、刪除和替換

  1. add(index: Int, element: E): Unit
    在指定索引 index 處插入一個新元素 E
  2. removeAt(index: Int): E
    刪除索引 index 處的元素,return 當(dāng)前被刪除的元素
  3. list[index] = E
    將索引 index 處的元素替換為 E
  4. clear(): Unit
    清空 List 中的所有元素
val mutableList = mutableListOf("Java", "kotlin", null, "Go")
// 在索引2處插入一個新元素
mutableList.add(2, "Swift")
println(mutableList) //[Java, kotlin, Swift, null, Go]
println(mutableList.size) //5

// 刪除索引1處的元素
mutableList.removeAt(1)
println(mutableList) //[Java, Swift, null, Go]
println(mutableList.size) //4

// 將索引1處的元素替換為 TypeScript
mutableList[1] = "TypeScript"
println(mutableList) //[Java, TypeScript, null, Go]
println(mutableList.size) //4

// 清空List中的所有元素
mutableList.clear()
println(mutableList) //[]
println(mutableList.size) //0

List 中的很多方法均與 Set 中一致,故本篇文章不做過多說明。
傳送門:Kotlin-數(shù)組與集合-Set

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。