Kotlin List介面


Kotlin List是一個介面和通用的元素集合。 List介面繼承了Collection <T>類的形式。 它是不可變的,它的方法只支援讀取功能。

要使用List介面,需要使用listOf()listOf <E>()函式。

List的元素按順序插入排序,包含與陣列相同的索引號。

List介面宣告

public interface List<out E> : Collection<E> (source)

Kotlin List介面的函式

List介面中有幾個函式可用,List介面的一些函式如下所述。

函式 描述
abstract fun contains(element: E): Boolean 它檢查指定的元素是否包含在此集合中。
abstract fun containsAll(elements: Collection<E>): Boolean 它檢查指定的所有元素是否包含在此集合中。
abstract operator fun get(index: Int): E 它返回列表中給定索引處的元素。
abstract fun indexOf(element: E): Int 返回列表中第一次出現的指定元素的索引,如果列表中不存在指定的元素,則返回-1
abstract fun isEmpty(): Boolean 如果列表為空,則返回true,否則返回false
abstract fun iterator(): Iterator<E> 它返回此列表元素的疊代器。
abstract fun lastIndexOf(element: E): Int 它返回列表中最後一次出現的指定元素的索引,如果列表中不存在指定的元素,則返回-1
abstract fun listIterator(): ListIterator<E> 它在當前列表中以適當的順序返回元素的列表疊代器。
abstract fun listIterator(index: Int): ListIterator<E> 它從指定的索引開始,從當前列表中的正確順序返回一個列表疊代器。
abstract fun subList(fromIndex: Int, toIndex: Int): List 它返回列表的fromIndex(包括)和toIndex(不包括)索引之間的部分。

Kotlin List範例1

下面來看看一個使用listOf()函式的List範例 -

fun main(args: Array<String>) {
    var list = listOf("Ajax", "Vivi", "Praka")//read only, fix-size
    for (element in list) {
        println(element)
    }
}

執行上面範例程式碼,得到以下結果 -

Ajax
Vivi
Praka

Kotlin List範例2
listOf()函式中,可以同時傳遞不同型別的資料。 List也可以使用索引範圍遍歷列表。

fun main(args: Array<String>){  
    var list = listOf(1,2,3,"Ajax","Vivi","Praka")//read only, fix-size  
    for(element in list){  
        println(element)  
    }  
    println("-------------- 使用範圍遍歷 -------------------- ")  
    for(index in 0..list.size-1){  
        println(list[index])  
    }  
}

執行上面範例程式碼,得到以下結果 -

1
2
3
Ajax
Vivi
Praka
-------------- 使用範圍遍歷 -------------------- 
1
2
3
Ajax
Vivi
Praka

Kotlin List範例3

更具體地說,可以提供列表的泛型型別,例如listOf <Int>()listOf <String>()listOf <Any>()函式,看看下面的例子。

fun main(args: Array<String>){
    var intList: List<Int> = listOf<Int>(1,2,3)
    var stringList: List<String> = listOf<String>("Ajax","Vivi","Yiibai")
    var anyList: List<Any> = listOf<Any>(1,2,3,"Ajax","Vivi","Yiibai")
    println("print int list")
    for(element in intList){
        println(element)
    }
    println("--------------------------")
    println("print string list")
    for(element in stringList){
        println(element)
    }
    println("--------------------------")
    println("print any list")
    for(element in anyList){
        println(element)
    }
}

執行上面範例程式碼,得到以下結果 -

print int list
1
2
3
--------------------------
print string list
Ajax
Vivi
Yiibai
--------------------------
print any list
1
2
3
Ajax
Vivi
Yiibai

Kotlin List範例4

下面來看看使用listOf <T>()函式使用Kotlin List介面的其它函式。

fun main(args: Array<String>){
    var stringList: List<String> = listOf<String>("Ajax","Vivi","Prakash","Vivi","Rohan")
    var list: List<String> = listOf<String>("Ajax","Vivi","Prakash")
    for(element in stringList){
        print(element+" ")
    }
    println()
    println(stringList.get(0))
    println(stringList.indexOf("Vivi"))
    println(stringList.lastIndexOf("Vivi"))
    println(stringList.size)
    println(stringList.contains("Prakash"))
    println(stringList.containsAll(list))
    println(stringList.subList(2,4))
    println(stringList.isEmpty())
    println(stringList.drop(1))
    println(stringList.dropLast(2))
}

執行上面範例程式碼,得到以下結果 -

Ajax Vivi Prakash Vivi Rohan 
Ajax
1
3
5
true
true
[Prakash, Vivi]
false
[Vivi, Prakash, Vivi, Rohan]
[Ajax, Vivi, Prakash]

List介面的限制是它是不可變的。 宣告後,它不能在列表中新增更多元素。為了解除這個限制,集合框架中提供了可變列表。