JAVA 手动分页集合数据
有很多情况下,接口返回的是一个List数据,并不分页,这时就需要我们自己分页,不过前提是接口传回数据是排序过的。这里举个例子,仅供参考:
package used;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @program: spring-boot04-web-restful
* @description:手动分页集合数据
* @Author:issuser
* @create: 2021-01-15 17:07
**/
public class testPageResult {
public static void main(String[] args) {
PageInfo pageInfo=new PageInfo(2,10);
PagingResult result=getPage(pageInfo);
System.out.println(result.toString()
);
}
public static PagingResult getPage(PageInfo pageInfo){
//手写一个集合
List<Integer> list= new ArrayList<>();
for (int i = 0; i < 100; i++) {
list.add(i);
}
//实例化分页结果对象
PagingResult result=new PagingResult();
//分页结果条数
result.setTotal(list.size());
//第一条标记
int start=Integer.parseInt(String.valueOf(pageInfo.getLimit()*(pageInfo.getStart()-1)));
//最后一条标记
int end=Integer.parseInt(String.valueOf(pageInfo.getLimit()*pageInfo.getStart()));
if(end>=list.size()){
end=list.size();
}
//根据标记取数据
List newList = list.subList(start,end);
//回填数据
result.setRows(newList);
return result;
}
}
class PageInfo implements Serializable {
private static final long serialVersionUID = 1L;
//页数
private int start;
//每页条数
private int limit;
public PageInfo() {
}
public PageInfo(int start, int limit) {
this.start = start;
this.limit = limit;
}
public int getStart() {
return this.start;
}
public void setStart(int start) {
this.start = start;
}
public int getLimit() {
return this.limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public String toString() {
StringBuffer sb = new StringBuffer("PageInfo{");
sb.append("start = ").append(this.start);
sb.append(", limit = ").append(this.limit);
sb.append(" }");
return sb.toString();
}
}
class PagingResult implements Serializable {
private static final long serialVersionUID = 1L;
//总共条数
private long total;
//分页数据
private List rows;
private List footer = new ArrayList(1);
public PagingResult() {
}
public long getTotal() {
return this.total;
}
public void setTotal(long total) {
this.total = total;
}
public List getRows() {
return this.rows;
}
public void setRows(List rows) {
this.rows = rows;
}
public List getFooter() {
return this.footer;
}
public void setFooter(List footer) {
this.footer = footer;
}
public void addFooter(Object row) {
this.footer.add(row);
}
@Override
public String toString() {
return "PagingResult{" +
"total=" + total +
", rows=" + rows +
", footer=" + footer +
'}';
}
}
输出结果:
PagingResult{total=100, rows=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19], footer=[]}
Process finished with exit code 0
分页参数各不相同,自行处理,本文仅供参考。