Kotlin入門教學:陣列與列表(二)

發布日期:2023/12/15
瀏覽次數:467

Kotlin提供了豐富的集合操作,使得對集合進行過濾、轉換、排序等處理變得非常簡潔和易讀。這一篇將詳細介紹一些常用的集合操作方法,並透過範例說明它們的使用。

map

map 方法用於將集合中的每個元素進行轉換,生成一個新的集合。

範例:將數字集合轉換為其平方

val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }

println("原始數字: $numbers")
println("平方數字: $squaredNumbers")

輸出:

原始數字: [1, 2, 3, 4, 5]
平方數字: [1, 4, 9, 16, 25]

filter

filter 方法用於過濾集合中的元素,返回符合條件的元素組成的新集合。

範例:過濾出偶數

val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }

println("原始數字: $numbers")
println("偶數: $evenNumbers")

輸出:

原始數字: [1, 2, 3, 4, 5]
偶數: [2, 4]

reduce

reduce 方法用於將集合中的元素進行累積操作。

範例:計算數字的總和

val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, i -> acc + i }

println("原始數字: $numbers")
println("總和: $sum")

輸出:

原始數字: [1, 2, 3, 4, 5]
總和: 15

sorted

sorted 方法用於將集合中的元素進行排序。

範例:將數字集合升序排序

val numbers = listOf(5, 3, 1, 4, 2)
val sortedNumbers = numbers.sorted()

println("原始數字: $numbers")
println("升序排序: $sortedNumbers")

輸出:

原始數字: [5, 3, 1, 4, 2]
升序排序: [1, 2, 3, 4, 5]

groupBy

groupBy 方法用於將集合中的元素根據某一條件進行分組。

範例:將人員根據年齡分組

data class Person(val name: String, val age: Int)

val people = listOf(
    Person("Alice", 25),
    Person("Bob", 30),
    Person("Charlie", 25),
    Person("David", 30)
)

val groupedByAge = people.groupBy { it.age }

println("人員列表: $people")
println("根據年齡分組: $groupedByAge")

輸出:

人員列表: [Person(name=Alice, age=25), Person(name=Bob, age=30), Person(name=Charlie, age=25), Person(name=David, age=30)]
根據年齡分組: {25=[Person(name=Alice, age=25), Person(name=Charlie, age=25)], 30=[Person(name=Bob, age=30), Person(name=David, age=30)]}

any 和 all

any 方法用於檢查集合中是否至少有一個元素符合條件,而 all 方法用於檢查集合中是否所有元素都符合條件。

範例:檢查是否存在年齡超過 25 歲的人員

val people = listOf(
    Person("Alice", 25),
    Person("Bob", 30),
    Person("Charlie", 22)
)

val isAnyOver25 = people.any { it.age > 25 }
val areAllOver25 = people.all { it.age > 25 }

println("人員列表: $people")
println("是否存在年齡超過 25 歲的人員: $isAnyOver25")
println("是否所有人員年齡都超過 25 歲: $areAllOver25")

輸出:

人員列表: [Person(name=Alice, age=25), Person(name=Bob, age=30), Person(name=Charlie, age=22)]
是否存在年齡超過 25 歲的人員: true
是否所有人員年齡都超過 25 歲: false

distinct

distinct 方法用於去除集合中的重複元素。

範例:去除重複的數字

val numbers = listOf(1, 2, 3, 1, 2, 4, 5, 3)
val distinctNumbers = numbers.distinct()

println("原始數字: $numbers")
println("去除重複後: $distinctNumbers")

輸出:

原始數字: [1, 2, 3, 1, 2, 4, 5, 3]
去除重複後: [1, 2, 3, 4, 5]

結語

Kotlin提供了豐富的集合操作方法,使得對集合進行各種處理變得更加簡單和便捷。根據實際需求,選擇適當的集合操作方法能夠提高程式碼的可讀性和維護性。希望這些範例能夠幫助你更好地使用Kotlin中的集合操作。

Like