赞
踩
根据业务需求,将数据提供给前端时需要实现分页,但由于数据是调用第三方服务查询出来的,并没有实现分页,因此后端需要实现分页后在将数据提供给前端
各种百度后发现了list中的sublist方法,可方便的实现该需求,特此记录(PS:代码是网上找的,亲测可用)
/**
* list集合工具类
*/
public class ListUtils {
/**
*
* @param pageSize 当前页面大小
* @param pageIndex 当前页码
* @param list 需要分页的集合
* @return 当前展示页内容
*/
public static<T> List<T> Pager(int pageSize, int pageIndex, List<T> list){
//使用list 中的sublist方法分页
List<T> dataList = new ArrayList<>();
// 每页显示多少条记录
int currentPage; //当前第几页数据
// 一共多少条记录
int totalRecord = list.size();
// 一共多少页
int totalPage = totalRecord % pageSize;
if (totalPage > 0) {
totalPage = totalRecord / pageSize + 1;
} else {
totalPage = totalRecord / pageSize;
}
System.out.println("总页数:" + totalPage);
// 当前第几页数据
currentPage = totalPage < pageIndex ? totalPage : pageIndex;
// 起始索引
int fromIndex = pageSize * (currentPage - 1);
// 结束索引
int toIndex = pageSize * currentPage > totalRecord ? totalRecord : pageSize * currentPage;
try{
dataList = list.subList(fromIndex, toIndex);
}catch(IndexOutOfBoundsException e){
e.printStackTrace();
}
return dataList;
}
/**
* @description 获取当前页数
* @method getCurrentPage
* @param pageSize
* @param pageIndex
* @param list
* @return int
*/
public static<T> int getCurrentPage(int pageSize, int pageIndex, List<T> list){
//使用list 中的sublist方法分页
List<T> dataList = new ArrayList<>();
// 每页显示多少条记录
int currentPage; //当前第几页数据
// 一共多少条记录
int totalRecord = list.size();
// 一共多少页
int totalPage = totalRecord % pageSize;
if (totalPage > 0) {
totalPage = totalRecord / pageSize + 1;
} else {
totalPage = totalRecord / pageSize;
}
System.out.println("总页数:" + totalPage);
// 当前第几页数据
currentPage = totalPage < pageIndex ? totalPage : pageIndex;
return currentPage;
}
}
必须将所有的数据查询出来放到list中,这会导致数据越多查询速度越慢,所以可以改为数据库分页的最好可用用数据库分页的方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。