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]