kotlin: chunked函数,分块
一,功能
chunked()
方法接收一个整数参数表示块的大小,并返回一个由列表组成的列表,
每个子列表的大小为指定值。
如果最后一组不足块大小,也会照样返回。
还可以传入一个 lambda 表达式对每个块进行转换。
二,例子
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
// 每3个为一组进行分块
println(list.chunked(3))
// 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
// 每3个为一组,将每组求和
println(list.chunked(3) { it.sum() })
// 输出:[6, 15, 24, 10]
// 每3个为一组,将每组转换成字符串
println(list.chunked(3) { it.joinToString() })
// 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
运行结果:
三,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
//我们得到一个字符串数组
val test = listOf("AA", "AB", "CC", "DD", "EE", "GF", "GG")
//将集合拆分指定的大小的块 例如 长度3
println(test.chunked(3)) //[[AA, AB, CC], [DD, EE, GF], [GG]]
//将集合拆分成块,长度3,然后在块内按首字母做分组
println(test.chunked(3) { it.groupBy { v -> v.first() } })
//[{A=[AA, AB], C=[CC]}, {D=[DD], E=[EE], G=[GF]}, {G=[GG]}]
}
运行结果: