Java中對list集合進行分頁的四種方式介紹
這篇文章主要為大家提供了四種在Java中對List進行分頁處理的方法,包括計算總頁數、獲取子列表等操作,適用于數據量較大時的顯示優(yōu)化。大家可以根據自己的需要進行選擇
方式一
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分頁內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
教你如何用Eclipse創(chuàng)建一個Maven項目
這篇文章主要介紹了教你如何用Eclipse創(chuàng)建一個Maven項目,文中有非常詳細的代碼示例,對正在入門Java的小伙伴們是非常有幫助的喲,需要的朋友可以參考下2021-05-05
解決SpringCloud gateway網關配置MVC攔截器報錯問題
這篇文章主要介紹了解決SpringCloud gateway網關配置MVC攔截器報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Java創(chuàng)建類模式_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java創(chuàng)建類模式的相關方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
springboot做代理分發(fā)服務+代理鑒權的實現過程
這篇文章主要介紹了springboot做代理分發(fā)服務+代理鑒權的實現過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
解決IDEA報錯Failed?to?start?bean‘documentationPluginsBootstra
這篇文章主要介紹了解決IDEA報錯Failed?to?start?bean‘documentationPluginsBootstrapper‘問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
java圖像識別工具類(ImageRecognitionUtils)使用實例詳解
這篇文章主要介紹了如何在Java中使用OpenCV進行圖像識別,包括圖像加載、預處理、分類、人臉檢測和特征提取等步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-01-01

