Kotlin MutableList接口

Kotlin MutableList是一個接口和通用的元素集合。 MutableList接口本質上是可變的。 它繼承了Collection <T>類的形式。 MutableList接口的方法支持讀寫功能。 當MutableList中聲明瞭元素,就可以添加更多元素或刪除它們,因此MutableList沒有固定的大小長度。

要使用MutableList接口,需要使用mutableListOf()mutableListOf <E>()函數。

MutableList的元素遵循插入順序來排序,並與數組具有相同的索引號。

MutableList接口聲明

interface MutableList<E> : List<E>, MutableCollection<E> (source)

Kotlin MutableList函數

MutableList接口中有幾種方法可用,下面提到MutableList接口的一些方法。

方法

描述

abstract fun add(element: E): Boolean

它將給定元素添加到集合中。

abstract fun add(index: Int, element: E)

它在指定的索引處添加元素。

abstract fun addAll(elements: Collection<E>): Boolean

它將給定集合的所有元素添加到當前集合中。

abstract fun clear()

它會刪除此集合中的所有元素。

abstract fun listIterator(): MutableListIterator<E>

它在當前列表中以適當的順序返回元素的列表迭代器。

abstract fun listIterator(index: Int): MutableListIterator<E>

它以適當的順序從列表中的元素返回從指定索引開始的列表迭代器。

abstract fun remove(element: E): Boolean

如果指定的元素存在於當前集合中,它將刪除它。

abstract fun removeAll(elements: Collection<E>): Boolean

它會刪除當前列表中也存在於指定集合中的所有元素。

abstract fun removeAt(index: Int): E

它從列表中刪除給定索引處的元素。

abstract fun retainAll(elements: Collection<E>): Boolean

它保留當前集合中存在於給定集合中的所有元素(交集)。

abstract operator fun set(index: Int, element: E): E

它替換元素並在給定索引處添加指定元素。

abstract fun subList(fromIndex: Int, toIndex: Int): MutableList<E>

它從當前列表返回從指定fromIndex(包括)到toIndex(不包括)的列表的一部分。

Kotlin MutableList示例1

下面來看看如何使用mutableListOf()函數示例來遍歷列表中的元素。

fun main(args: Array<String>){
    var mutableList = mutableListOf("Ajax","Maxsu","Praka","Maxsu")

    for(element in mutableList){
        println(element)
    }
    println()
    for(index in 0..mutableList.size-1){
        println(mutableList[index])
    }
}

執行上面示例代碼,得到以下結果 -

Ajax
Maxsu
Praka
Maxsu

Ajax
Maxsu
Praka
Maxsu

Kotlin MutableList示例2

MutableList接口的mutableListOf()函數提供了在聲明後添加元素的功能。 MutableList也可以聲明爲空並稍後添加元素,但在這種情況下需要定義泛型類型。 例如:

fun main(args: Array<String>){
    var mutableList1 = mutableListOf("Ajax","Vijax")
    mutableList1.add("Praka")
    mutableList1.add("Vijax")

    var mutableList2 = mutableListOf<String>()
    mutableList2.add("A1")
    mutableList2.add("A2")
    mutableList2.add("A3")

    for(element in mutableList1){
        println(element)
    }
    println()
    for(element in mutableList2){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

Ajax
Vijax
Praka
Vijax

A1
A2
A3

Kotlin MutableList示例3

更具體地說,可以提供MutableList接口的泛型類型,例如:mutableListOf <Int>()mutableListOf <String>()mutableListOf <Any>()mutableListOf <Int>()只接受整數值,mutableListOf <String>()只接受String值,mutableListOf <Any>()同時接受不同的數據類型值。看看這個例子。

fun main(args: Array<String>){
    var mutableListInt: MutableList<Int> = mutableListOf<Int>()
    var mutableListString: MutableList<String> = mutableListOf<String>()
    var mutableListAny: MutableList<Any> = mutableListOf<Any>()

    mutableListInt.add(5)
    mutableListInt.add(7)
    mutableListInt.add(10)
    mutableListInt.add(2,15) //add element 15 at index 2

    mutableListString.add("A1")
    mutableListString.add("As")
    mutableListString.add("A3")

    mutableListAny.add("S1")
    mutableListAny.add(2)
    mutableListAny.add(5)
    mutableListAny.add("R1")

    println(".....print Int type.....")
    for(element in mutableListInt){
        println(element)
    }
    println()
    println(".....print String type.....")
    for(element in mutableListString){
        println(element)
    }
    println()
    println(".....print Any type.....")
    for(element in mutableListAny){
        println(element)
    }
}

執行上面示例代碼,得到以下結果 -

.....print Int type.....
5
7
15
10

.....print String type.....
A1
As
A3

.....print Any type.....
S1
2
5
R1

Kotlin MutableList示例4

下面來看看如何使用mutableListOf <T>()函數來使用MutableList接口的其他功能。

fun main(args: Array<String>){
    var mutableList = mutableListOf<String>()

    mutableList.add("A1") // index 0
    mutableList.add("V1") // index 1
    mutableList.add("P1") // index 2

    var mutableList2 = mutableListOf<String>("R1","R12")
    var mutableList3 = mutableListOf<String>("D3","U3")
    var mutableList4 = mutableListOf<String>("A1","D4","A4")

    println(".....mutableList.....")
    for(element in mutableList){
        println(element)
    }
    println(".....mutableList[2].....")
    println(mutableList[2])
    mutableList.add(2,"Rx")
    println("......mutableList.add(2,\"Rx\")......")
    for(element in mutableList){
        println(element)
    }
    mutableList.add("Ax")
    println(".....mutableList.add(\"Ax\")......")
    for(element in mutableList){
        println(element)
    }
    mutableList.addAll(1,mutableList3)
    println("... mutableList.addAll(1,mutableList3)....")
    for(element in mutableList){
        println(element)
    }
    mutableList.addAll(mutableList2)
    println("...mutableList.addAll(mutableList2)....")
    for(element in mutableList){
        println(element)
    }
    mutableList.remove("V1")
    println("...mutableList.remove(\"V1\")....")
    for(element in mutableList){
        println(element)
    }
    mutableList.removeAt(2)
    println("....mutableList.removeAt(2)....")
    for(element in mutableList){
        println(element)
    }
    mutableList.removeAll(mutableList2)
    println("....  mutableList.removeAll(mutableList2)....")
    for(element in mutableList){
        println(element)
    }

    println("....mutableList.set(2,\"As\")....")
    mutableList.set(2,"As")
    for(element in mutableList){
        println(element)
    }

    println(".... mutableList.retainAll(mutableList4)....")
    if(mutableList.retainAll(mutableList4)){
        println("Yes...")
    }
    for(element in mutableList){
        println(element)
    }
    println(".... mutableList2.clear()....")
    mutableList2.clear()

    for(element in mutableList2){
        println(element)
    }
    println(".... mutableList2 after mutableList2.clear()....")
    println(mutableList2)

    println("....mutableList.subList(1,2)....")
    println(mutableList.subList(0,1))
}

執行上面示例代碼,得到以下結果 -

.....mutableList.....
A1
V1
P1
.....mutableList[2].....
P1
......mutableList.add(2,"Rx")......
A1
V1
Rx
P1
.....mutableList.add("Ax")......
A1
V1
Rx
P1
Ax
... mutableList.addAll(1,mutableList3)....
A1
D3
U3
V1
Rx
P1
Ax
...mutableList.addAll(mutableList2)....
A1
D3
U3
V1
Rx
P1
Ax
R1
R12
...mutableList.remove("V1")....
A1
D3
U3
Rx
P1
Ax
R1
R12
....mutableList.removeAt(2)....
A1
D3
Rx
P1
Ax
R1
R12
....  mutableList.removeAll(mutableList2)....
A1
D3
Rx
P1
Ax
....mutableList.set(2,"As")....
A1
D3
As
P1
Ax
.... mutableList.retainAll(mutableList4)....
Yes...
A1
.... mutableList2.clear()....
.... mutableList2 after mutableList2.clear()....
[]
....mutableList.subList(1,2)....
[A1]