iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0

Array 概念簡單,效能也很好,不過也因為它的限制比較多,所以除非真的有效能考量,不然一般會考慮使用其他的 Collection 物件,享受更豐富的功能。在這篇文章裡,要為大家介紹 List 物件。

什麼是 List?

List 的許多特點跟 Array 差不多,一樣是一個有格子的容器,可以承裝相同型別的資料,也是用 zero-index 來編號。與 Array 不同的是,List 有兩種,一種是容量與內容都不可變的 List、一種則是可以動態改變容量及內容的 MutableList

宣告 List

宣告 List 很簡單,Kotlin 標準函式庫提供了兩個函數 listOf() 用來宣告一個靜態的 List、mutableListOf() 用來宣告一個動態的 List。

val listOfNumbers = listOf(2, 3, 5, 6, 7)
val mutableListOfNumbers = mutableListOf(2, 3, 5, 6, 7)

透過 Kotlin 的型別推斷,listOfNumbers 的型別就會是 List<Int>mutableListOfNumbers 的型別則會是 MutableList<Int>。要注意的是,List 一樣只能放相同型別的資料喔!

假如今天需要宣告一個空的 List 或 MutableList,則有幾種可行的作法:

val emptyList = listOf<Int>()
val emptyMutableList = mutableListOf<Int>()
val emptyListByEmptyList = emptyList<Int>()

操作 List

當我們把資料放進 List 或 MutableList 後,我們可以用 index、get() 方法或迴圈來取得其中的資料:

val firstValue = listOfNumbers[0] // 取得 index 是 0 的值
val secondValue = listOfNumbers.get(2) // 取得 index 是 2 的值

for (item in listOfNumbers) {
    println(item) // 會一行一行印出 2 3 5 6 7
}

我們也可以用 List 的屬性或方法來取得 List 的資訊,或是做資料處理:

val listOfNumbers = listOf(2, 3, 5, 6, 7)
val size = listOfNumbers.size // 以屬性取得 List 的大小
val sum = listOfNumbers.sum() // 計算出 List 裡所有數字的總合
val average = listOfNumbers.average() // 計算出 List 裡所有數字的平均值
val min = listOfNumbers.minOrNull() // 取出 List 裡的最小值或 Null
val max = listOfNumbers.maxOrNull() // 取出 List 裡的最大值或 Null

更好用的 Array

Array 的長度不能改,但內容卻可以改的特點往往讓人糊塗。而 List 的設計就顯得清楚,想要固定長度、不可更改的話就用 List;想要彈性長度、可以更改的話就用 MutableList。其他功能及操作方式基本上是跟 Array 相同的,後續的章節也會介紹更多 List 好用的技巧。不過,List 並沒有限制其中的內容是否重複,假如你想要一個不會重複的 List 的話,就得改用 Set,我們會在下一章會大家介紹。

參考資料


上一篇
第七天:Kotlin Collection 之 Array
下一篇
第九天:Kotlin Collection 之 Set
系列文
新手也能懂的 Kotlin Collection 賞玩門道31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言