
- 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
廣告