相信大家工作中经常需要用到一次请求数据量过大,需要分批请求的情况,下面就提供这样的一个分批方法
fun <T> splitGroup(list:List<T>, groupSize:Int, subListCallback:((List<T>) -> Unit) ?= null) {
val groupNum = list.size / groupSize
val remainLast = list.size % groupSize
for (index in 0 until groupNum) {
val start = index * groupSize
subListCallback?.invoke(list.subList(start, start + groupSize))
}
if (remainLast > 0) {
val index = (groupNum) * groupSize
subListCallback?.invoke(list.subList(index, index + remainLast))
}
}
使用的时候可以这么写
val split = arrayListOf(1,2,3,4,5,6,7,8,9,10)
splitGroup(split, groupSize = 5, subListCallback = {
println(it)
})
运行结果如下:
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]