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