如果你要取出集合內的單一元素,可以透過 Collections 內的一些好用的方法。
說明
Retrieving by position
根據位置取出取出元素。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.elementAt(3))
因為這邊是根據位置取出元素,而在科學集合內,數據通常是以 0 當作 index 的開頭,所以取出 index = 3
代表著是第四個位置的元素。
4
你也可以直接取出第一個或者最後一個元素。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.first())
println(numbers.last())
結果如下。
1
5
如果你想要檢查元素是否超過索引值或者是 null,可以透過 elementAtOrNull 方法。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.elementAtOrNull(5))
這樣就會回傳 null。
或者你也可以設定 lambda 來客製化訊息。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.elementAtOrElse(5) { index -> "The value for index $index is undefined"})
Retrieving by condition
根據條件取出元素,Collections 提供了許多便利的函式讓你輕鬆設定一些條件來取出單一元素。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.first { it > 3 })
結果就會出現 4,因為是取出單一元素,所以只會回傳第一個找到的。
你也可以透過 firstOrNull 或 lastOrNull 函式順便檢查是否有這個值。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.firstOrNull { it > 6 })
這樣就會回傳 null。
你也可以透過 find 來取代 firstOrNull,findLast 來取代 lastOrNull。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.find { it % 2 == 0 })
println(numbers.findLast { it % 2 == 0 })
結果如下。
2
4
Random element
如果你想要取得集合內的隨機一個數字,可以透過 random 函式。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.random())
Checking existence
如果你想檢查這個集合內是否存在該元素,可以透過 contains 這個函式,也可以用 in 這個關鍵字來檢查,如果存在就會回傳 true,反之就是 false。
val numbers = listOf(1, 2, 3, 4, 5)
println(numbers.contains(4))
println(3 in numbers)
結果都會是 true。
你也可以直接比對集合,透過這個 containsAll 函式。
val numbers = listOf(1, 2, 3, 4, 5)
val subNums1 = listOf(1, 2, 3)
val subNums2 = listOf(1, 2, 6)
println(numbers.containsAll(subNums1))
println(numbers.containsAll(subNums2))
只要其中一個元素不符合就會回傳 false,結果如下。
true
false
你也可以檢查這個集合是否為空的。
val empty = emptyList<String>()
println(empty.isEmpty())
println(empty.isNotEmpty())
結果如下。
true
false
參考資料
https://www.kotlincn.net/docs/reference/collection-elements.html