这篇文章主要为大家提供了四种在java中对list进行分页处理的方法,包括计算总页数、获取子列表等操作,适用于数据量较大时的显示优化。大家可以根据自己的需要进行选择
方式一
public static void fenye(list list,int pagesize){
int totalcount=list.size();
int pagecount=0;
int m=totalcount%pagesize;
if (m>0){
pagecount=totalcount/pagesize+1;
}else{
pagecount=totalcount/pagesize;
}
for(int i=1;i<=pagecount;i++){
if (m==0){
list<integer> sublist= list.sublist((i-1)*pagesize,pagesize*(i));
system.out.println(sublist);
}else{
if (i==pagecount){
list<integer> sublist= list.sublist((i-1)*pagesize,totalcount);
system.out.println(sublist);
}else{
list<integer> sublist= list.sublist((i-1)*pagesize,pagesize*(i));
system.out.println(sublist);
}
}
}
}
list<integer> list=new arraylist<integer>();
for(int i=1;i<52;i++){
list.add(i);
}
fenye(list,10);方式二
public <t> list<list<t>> splitlist(list<t> list, int pagesize)
{
int listsize = list.size();
int page = (listsize + (pagesize - 1)) / pagesize;
list<list<t>> listarray = new arraylist<list<t>>();
for (int i = 0; i < page; i++)
{
list<t> sublist = new arraylist<t>();
for (int j = 0; j < listsize; j++)
{
int pageindex = ((j + 1) + (pagesize - 1)) / pagesize;
if (pageindex == (i + 1))
{
sublist.add(list.get(j));
}
if ((j + 1) == ((j + 1) * pagesize))
{
break;
}
}
listarray.add(sublist);
}
return listarray;
}方式三
public searchresult paging(list<t> list, int pagenumber, int pagesize) throws exception{
list<t> pagelist = new arraylist<t>();
int curridx = (pagenumber > 1 ? (pagenumber -1) * pagesize : 0);
for (int i = 0; i < pagesize && i < list.size() - curridx; i++){
t listnew = list.get(curridx + i);
pagelist.add(listnew);
}
searchresult<t> searchresult = new searchresult<t>();
searchresult.setlist(pagelist);
searchresult.settotal(list.size());
if (searchresult.gettotal()%pagesize == 0){
searchresult.setpages((int)searchresult.gettotal()/pagesize);
}else {
searchresult.setpages((int)searchresult.gettotal()/pagesize + 1);
}
searchresult.setpagenum(pagenumber);
searchresult.setpagesize(pagesize);
searchresult.setsize(pagelist.size());
//是否是第一页
if (pagenumber == 1){
searchresult.setisfirstpage(true);
}else {
searchresult.setisfirstpage(false);
}
//是否是最后一页
if ((searchresult.gettotal() - pagenumber*pagesize) > 0){
searchresult.setislastpage(false);
}else {
searchresult.setislastpage(true);
}
return searchresult;
}方式四
list<integer> list = new arraylist<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
int page = 2;//相当于pageno-------分页中的pi
int count = 20;//相当于pagesize-------分页中的ps
int size = list.size();
int pagecount=size/count;
int fromindex = count * (page - 1);
int toindex = fromindex + count;
if (toindex >= size) {
toindex = size;
}
if(page>pagecount+1){
fromindex=0;
toindex=0;
}
system.out.println(list.sublist(fromindex, toindex));例子
rckqmonthlylist为一个list
if (rckqmonthlylist.size() <= 0) {
map.put("totalpage", 1);
map.put("pageindex", 1);
map.put("pagesize", query.getps());
map.put("totalrow", 0);
map.put("hasnext", false);
map.put("list", rckqmonthlylist);
return new apiresult().success(map);
}
//有数据时
//计算总页数
integer totalpage = rckqmonthlylist.size() / query.getps();
// if (rckqmonthlylist.size() % query.getps() > 0) {
// totalpage++;
// }
int fromindex = query.getps() * (query.getpi() - 1);
int toindex = fromindex + query.getps();
if (toindex >= rckqmonthlylist.size()) {
toindex = rckqmonthlylist.size();
}
if(query.getpi()>totalpage+1){
fromindex=0;
toindex=0;
}
boolean hasnext = query.getpi() != totalpage;
map.put("totalpage", totalpage);
map.put("pageindex", query.getpi());
map.put("pagesize", query.getps());
map.put("totalrow", rckqmonthlylist.size());
map.put("hasnext", hasnext);
map.put("list", rckqmonthlylist.sublist(fromindex,toindex));
return new apiresult().success(map);到此这篇关于java中对list集合进行分页的四种方式介绍的文章就介绍到这了,更多相关java list分页内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论