java手动分页
/**
* 手动分页
*
* @param currentPage 当前页数
* @param pageSize 每页条数
* @param list 要执行分页的数组
* @param <T>
* @return
*/
public static <T> PageInfo<T> getPageInfo(int currentPage, int pageSize, List<T> list) {
int total = list.size();
if (total > pageSize) {
int toIndex = pageSize * currentPage;
if (toIndex > total) {
toIndex = total;
}
int totalPage = total % pageSize == 0 ? (total / pageSize) : (total / pageSize) + 1;
if (totalPage < currentPage) {
list = new ArrayList<>();
} else {
list = list.subList(pageSize * (currentPage - 1), toIndex);
}
}
Page<T> page = new Page<>(currentPage, pageSize);
page.addAll(list);
page.setPages((total + pageSize - 1) / pageSize);
page.setTotal(total);
return new PageInfo<>(page);
}
kotlin分页
/**
* 将列表页根据分页信息封装成分页对象
*/
fun <T> subListToPage(
current: Int?,
size: Int?,
lists: List<T>
): IPage<T> {
val start = current ?: 1
val pageSize = size ?: 10
val count = lists.size
val fromIndex: Int = (start - 1) * pageSize
val toIndex: Int = (start * pageSize).coerceAtMost(count)
val page: IPage<T> = Page()
page.current = start.toLong()
page.size = pageSize.toLong()
page.records = lists.subList(fromIndex, toIndex)
page.total = count.toLong()
return page
}