Kotlin 实现内存分页完整源代码

作者: 光剑书架上的书 | 来源:发表于2019-06-21 17:34 被阅读45次

object PageHelper {

    /**
     * 对一个列表进行分页
     * @param list 列表
     * @param currentPage 当前页,从1开始
     * @param pageSize 每页数量
     */
    fun <T> page(list: MutableList<T>, currentPage: Int, pageSize: Int): Page<T> {
        val page = Page<T>()
        var data: MutableList<T> = mutableListOf()

        // 手动分页
        val totalCount = list.size

        val totalPage = if ((totalCount % pageSize) > 0) {
            (totalCount / pageSize + 1)
        } else {
            (totalCount / pageSize)
        }


        // 返回当前页数据封装
        if (totalCount > pageSize) {
            // 多页
            var i = (currentPage - 1) * pageSize

            while (true) {
                if (currentPage * pageSize > i) {
                    if (i < totalCount) {
                        data.add(list[i])
                        i++
                    } else {
                        break
                    }
                } else {
                    break
                }
            }

        } else {
            data = list
        }

        // 每页大小
        page.pageSize = pageSize
        // 总页数
        page.totalPage = totalPage
        // 总数
        page.totalCount = totalCount
        // 当前页
        page.currentPage = currentPage
        // 当前页的数据
        page.data = data

        return page
    }

}

class Page<T> {
    var currentPage: Int = 1
    var pageSize: Int = 10
    var totalPage: Int = 10
    var totalCount: Int = 10
    var data: MutableList<T> = mutableListOf()
}

Kotlin 开发者社区

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。
Kotlin 开发者社区 QRCode.jpg

相关文章

网友评论

    本文标题:Kotlin 实现内存分页完整源代码

    本文链接:https://www.haomeiwen.com/subject/dbsuqctx.html