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}")
            }
        }

运行结果:

image

三,例子

 代码:

        //处理按钮点击事件
        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]]
        }

运行结果:

image

四,例子:

 代码:

        //处理按钮点击事件
        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]}

        }

运行结果:

image

 

posted @ 2025-08-16 10:14  刘宏缔的架构森林  阅读(15)  评论(0)    收藏  举报