kotlin 集合分批算法

172 阅读1分钟

相信大家工作中经常需要用到一次请求数据量过大,需要分批请求的情况,下面就提供这样的一个分批方法

 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]