package util;
import java.util.List;
public class SubListUtil<E> {
private int page; // 当前页
private int pages; // 总页数
private int total; // 总条数
private int pageSize;// 每页显示数
private List<E> list;// 要进行分页的list
public SubListUtil(int page, int pageSize, List<E> list) {
super();
this.page = page;
this.pageSize = pageSize;
this.list = list;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getPages() {
if (this.total % this.pageSize == 0) {
this.pages = this.total / this.pageSize;
} else {
this.pages = this.total / this.pageSize + 1;
}
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public int getTotal() {
total = list.size();
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<E> getList() {
List<E> newList = this.list.subList(this.getPageSize() * (this.getPage() - 1),
(this.getPageSize() * this.getPage()) > this.getTotal() ? this.getTotal()
: (this.getPageSize() * this.getPage()));
// List<E> newList = this.list.subList(pageSize*(page-1),
// (pageSize*page)>total?total:(pageSize*page));
return newList;
}
public void setList(List<E> list) {
this.list = list;
}
}
测试方法
public void SubList() {
String receiver = this.getParams("receiver").trim();
PagingInfo pagingInfo = new PagingInfo(this.getParams("page"), this.getParams("pageSize"));
pagingInfo.invoke();
List<commentnotify> list = new ArrayList<>();
for(String clus_keys : DataBaseCluster.clusters.get("information").keySet()) {
IDatabase _tDatabase = DataBaseCluster.Get_READ_SERVER("information", clus_keys);
list.addAll(commentnotify.E().Where(commentnotify.receiver.Equals(receiver)).Select(_tDatabase));
}
SubListUtil<commentnotify> sListUtil = new SubListUtil<>(pagingInfo.getPage(), pagingInfo.getPageSize(), list);
/*sListUtil.getPage();
sListUtil.getPages();
sListUtil.getTotal();
sListUtil.getPageSize();
*/
List<commentnotify> result = sListUtil.getList();
this.WriteUTF8JSONDATAMSG(1, "success", result);
}
另一封装工具
package util;
import java.util.ArrayList;
import java.util.List;
public class PageList {
private Integer currentPage;//当前页
private int pageSize;//每页显示记录条数
private int totalPage;//总页数
private List<?> dataList;//每页显示的数据
private int star;//开始数据
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<?> getDataList() {
return dataList;
}
public void setDataList(List<?> dataList) {
this.dataList = dataList;
}
public int getStar() {
return star;
}
public void setStar(int star) {
this.star = star;
}
/**
* List分页
* @param getpgindex 第几页
* @param PageSize 一页有多少条数据
* @param list
* @return
*/
public static List<?> Paging(String getpgindex,String PageSize,List<?> list){
PageList page = new PageList();
//查询出的list数据
List<?> focusOnProblems = list;
//刚开始的页面为第一页
if (getpgindex == ""){
page.setCurrentPage(1);
} else {
page.setCurrentPage(Integer.valueOf(getpgindex));
}
//设置每页数据为十条
page.setPageSize(Integer.valueOf(PageSize));
//每页的开始数
page.setStar((page.getCurrentPage() - 1) * page.getPageSize());
//list的大小
int count = focusOnProblems.size();
//设置总页数
page.setTotalPage(count % page.getPageSize() == 0 ? count / page.getPageSize() : count / page.getPageSize() + 1);
//对list进行截取
try {
page.setDataList(focusOnProblems.subList(page.getStar(),count-page.getStar()>page.getPageSize()?page.getStar()+page.getPageSize():count));
} catch (Exception e) {
return new ArrayList<>();
}
System.out.println(page.getDataList());
return page.getDataList();
}
}