kotlin: groupby函数
一,功能:
通过应用于每个元素的给定 keySelector 函数返回的键对原始序列的元素进行分组,
并返回一个映射,其中每个组键与对应元素的列表相关联。
返回的映射保留从原始序列生成的键的条目迭代顺序。
二,例子
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
val mList = arrayListOf(0, 1, 2, 3, 4, 5, 6)
val groupByList = mList.groupBy {
//定义key,boolean
it % 2 == 0
}
println(groupByList)
//这里返回两个元素的map
//{true=[0, 2, 4, 6], false=[1, 3, 5]}
groupByList.entries.forEach {
println("${it.key}==========${it.value}")
}
//返回自定义的key
val groupByList2 = mList.groupBy {
//定义key
if (it % 2 == 0) {
"偶数"
} else {
"奇数"
}
}
println(groupByList2)
//这里返回两个元素的map
//{偶数=[0, 2, 4, 6], 奇数=[1, 3, 5]}
groupByList2.entries.forEach {
println("${it.key}==========${it.value}")
}
}
运行结果:

三,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
//sampleStart,按长度分组
val words = listOf("a", "abc", "ab", "def", "abcd")
val byLength = words.groupBy { it.length }
println("keys:"+byLength.keys) // [1, 3, 2, 4]
println("values:"+byLength.values) // [[a], [abc, def], [ab], [abcd]]
}
运行结果:
![]()
四,例子:
代码:
//处理按钮点击事件
binding.button3.setOnClickListener {
//按list每个元素的second分组
val nameToTeam = listOf("Alice" to "Marketing", "Bob" to "Sales", "Carol" to "Marketing")
val namesByTeam = nameToTeam.groupBy({ it.second }, { it.first })
println("分组后结果:")
println(namesByTeam) // {Marketing=[Alice, Carol], Sales=[Bob]}
}
运行结果:
![]()
浙公网安备 33010602011771号