- Kotlin 教程
- Kotlin - 首頁
- Kotlin - 概述
- Kotlin - 環境搭建
- Kotlin - 架構
- Kotlin - 基本語法
- Kotlin - 註釋
- Kotlin - 關鍵字
- Kotlin - 變數
- Kotlin - 資料型別
- Kotlin - 運算子
- Kotlin - 布林值
- Kotlin - 字串
- Kotlin - 陣列
- Kotlin - 範圍
- Kotlin - 函式
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表示式
- Kotlin - When 表示式
- Kotlin - For 迴圈
- Kotlin - While 迴圈
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 對映
- Kotlin 物件和類
- Kotlin - 類和物件
- Kotlin - 建構函式
- Kotlin - 繼承
- Kotlin - 抽象類
- Kotlin - 介面
- Kotlin - 可見性控制
- Kotlin - 擴充套件
- Kotlin - 資料類
- Kotlin - 密封類
- Kotlin - 泛型
- Kotlin - 委託
- Kotlin - 解構宣告
- Kotlin - 異常處理
- Kotlin 有用資源
- Kotlin - 快速指南
- Kotlin - 有用資源
- Kotlin - 討論
Kotlin 陣列 - groupBy() 函式
Kotlin 陣列的 groupBy() 函式用於根據指定的鍵選擇器函式對原始陣列中的元素進行分組。它返回一個 Map,其中鍵是鍵選擇器函式的結果,值是與每個鍵對應的元素列表。
返回的對映保留了從原始陣列生成的鍵的條目迭代順序。
語法
以下是 Kotlin 陣列 groupBy() 函式的語法:
fun <T, K> Iterable<T>.groupBy( keySelector: (T) -> K): Map<K, List<T>>
引數
此函式接受一個selector: (T) -> (k) 函式。這是一個 lambda 函式,用於定義如何為陣列中的每個元素選擇一個鍵。'T' 是陣列中元素的型別,'k' 是選擇器函式返回的鍵的型別。
返回值
此函式返回一個對映。
示例 1
以下是一個演示 groupBy() 函式用法的基本示例:
fun main(args: Array<String>){
val words = arrayOf("tutorialspoint", "tutorix", "kotlin", "Hyderabad", "Noida", "India")
val byLength = words.groupBy { it.length }
println(byLength)
println(byLength.keys)
println(byLength.values)
}
輸出
執行上述程式碼後,我們將獲得以下結果:
{14=[tutorialspoint], 7=[tutorix], 6=[kotlin], 9=[Hyderabad], 5=[Noida, India]}
[14, 7, 6, 9, 5]
[[tutorialspoint], [tutorix], [kotlin], [Hyderabad], [Noida, India]]
示例 2
現在,讓我們看另一個例子。在這裡,我們正在建立一個對列表,並使用groupBy()對所有具有其角色的元素進行分組:
fun main(args: Array<String>) {
val nameToTeam = listOf("Aman" to "Developer", "Amansha" to "Devloper", "tuorialspoint" to "EdTech", "tutorix" to "Tuition center")
val namesByTeam = nameToTeam.groupBy({ it.second }, { it.first })
println(namesByTeam)
}
輸出
執行上述程式碼後,我們將獲得以下輸出:
{Developer=[Aman], Devloper=[Amansha], EdTech=[tuorialspoint], Tuition center=[tutorix]}
示例 3
以下示例使用類和物件。然後,我們建立一個包含物件的陣列,並使用 groupBy() 函式按類對陣列中的物件進行分組:
import kotlin.reflect.KClass
fun main(args: Array<String>){
val people = arrayOf(
Employer("John", 42),
Employer("Mark", 38),
Employee("Sunny", 27, 35000.0),
Employee("Joseph", 32, 41000.0)
)
//groupingBy
val byType: Map<KClass<*>, List<Any>> = people.groupBy{ it.javaClass.kotlin }
println("Employers: ${byType[Employer::class]}")
println("Employees: ${byType[Employee::class]}")
}
//classes
data class Employer(val name: String, val age: Int)
data class Employee(val name: String, val age: Int, val salaray: Double)
輸出
上述程式碼產生以下輸出:
Employers: [Employer(name=John, age=42), Employer(name=Mark, age=38)] Employees: [Employee(name=Sunny, age=27, salaray=35000.0), Employee(name=Joseph, age=32, salaray=41000.0)]
kotlin_arrays.htm
廣告