如何取出集合中的單個元素

如何取出集合中的單個元素

如果你要取出集合內的單一元素,可以透過 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