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]

上一篇:Kotlin List接口

下一篇:Kotlin ArrayList类

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程