java對(duì)list集合進(jìn)行分頁(yè)的四種寫(xiě)法總結(jié)
java對(duì)list集合進(jìn)行分頁(yè)的寫(xiě)法
假設(shè)有一個(gè)list數(shù)組,因?yàn)榭倲?shù)過(guò)大,在進(jìn)行查詢或者調(diào)用外部接口時(shí),需要對(duì)其進(jìn)行分頁(yè)處理,可以用以下幾種方式進(jìn)行處理
eq:
List<String> bigList=Lists.newArrayList("a","b","c","d","e","f","g","h");1. subList分頁(yè)【java.util.List.sublist(int fromIndex,int toIndex)】
int pageSize=3;//每頁(yè)大小
int count=bigList.size();//總list
int totalPage=(int)((count/pageSize)+(count % pageSize >0?1:0));//總頁(yè)數(shù)
for(int i=1;i<=totalPage;i++){
List<String> smallList=bigList.sublist(pageSize*(i-1),Math.min(pageSize*i,count));//截取對(duì)應(yīng)范圍數(shù)據(jù)
System.out.println(smallList.toString());
}2. partition分頁(yè)【com.google.com.collect.Lists.partition(List list,int size) 】
int pageSize=3;//每頁(yè)大小
List<List<String>> partitionList=Lists.partition(bigList,pageSize);//進(jìn)行分頁(yè)
for(List<String> smallList:partitionList){
System.out.println(smallList.toString());
}3. java8 stream流 分頁(yè)
int pageSize=3;//每頁(yè)大小
int count=bigList.size();//總list
int totalPage=(int)((count/pageSize)+(count % pageSize >0?1:0));//總頁(yè)數(shù)
// 使用 Stream 實(shí)現(xiàn)分頁(yè)
for(int i=1;i<=totalPage;i++){
List<String> smallList= bigList.stream()
.skip(PageSize*(i-1)) // 跳過(guò)前 PageSize*(i-1) 個(gè)元素
.limit(pageSize) // 限制結(jié)果數(shù)量為 pageSize
.collect(Collectors.toList()); //結(jié)果為列表
System.out.println(smallList.toString());
}4. hutool工具類提供的方法ListUtil.split(List list,int size)
實(shí)際內(nèi)部實(shí)現(xiàn)還是subList分頁(yè)
int pageSize=3;//每頁(yè)大小
List<List<String>> splitList=ListUtil.split(bigList,pageSize);//bigList 需處理的列表,pageSize分頁(yè)長(zhǎng)度
for(List<String> smallList:splitList){
System.out.println(smallList.toString());
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用JCTools實(shí)現(xiàn)Java并發(fā)程序
這篇文章主要介紹了如何使用JCTools實(shí)現(xiàn)Java并發(fā)程序,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
Spring解決循環(huán)依賴問(wèn)題及三級(jí)緩存的作用
這篇文章主要介紹了Spring解決循環(huán)依賴問(wèn)題及三級(jí)緩存的作用,所謂的三級(jí)緩存只是三個(gè)可以當(dāng)作是全局變量的Map,Spring的源碼中大量使用了這種先將數(shù)據(jù)放入容器中等使用結(jié)束再銷毀的代碼風(fēng)格2022-07-07
SpringBoot3.x嵌入MongoDB進(jìn)行測(cè)試的步驟詳解
本文介紹了在?Spring?Boot?應(yīng)用中使用Flapdoodle?Embed?Mongo進(jìn)行?MongoDB?測(cè)試的方法,包括Embed?Mongo?的概念,添加依賴、配置、運(yùn)行測(cè)試的步驟,還列舉了其優(yōu)勢(shì)如快速啟動(dòng)關(guān)閉、環(huán)境一致、無(wú)需外部依賴等,以及注意事項(xiàng)和結(jié)論,需要的朋友可以參考下2024-12-12
Java實(shí)戰(zhàn)之課程信息管理系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了如何利用Java實(shí)現(xiàn)課程信息管理系統(tǒng),文中采用到的技術(shù)有:Springboot、SpringMVC、MyBatis、FreeMarker等,感興趣的可以了解一下2022-04-04
HttpClient的RedirectStrategy重定向處理核心機(jī)制
這篇文章主要為大家介紹了HttpClient的RedirectStrategy重定向處理核心機(jī)制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
java集合 collection-list-LinkedList詳解
下面小編就為大家?guī)?lái)一篇java集合 collection-list-LinkedList詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
SpringBoot整合log4j日志與HashMap的底層原理解析
這篇文章主要介紹了SpringBoot整合log4j日志與HashMap的底層原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Jenkins環(huán)境搭建之下載與安裝過(guò)程
Jenkins是一個(gè)功能強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項(xiàng)目,集成Jenkins可以用于一些測(cè)試和部署技術(shù),對(duì)Jenkins環(huán)境搭建之下載與安裝過(guò)程感興趣的朋友跟隨小編一起看看吧2021-12-12
使用IDEA如何導(dǎo)入SpringBoot項(xiàng)目
這篇文章主要介紹了使用IDEA如何導(dǎo)入SpringBoot項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,2023-12-12
java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢功能
這篇文章主要介紹了java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢,基于Maven框架的整體設(shè)計(jì) —— 一多一的關(guān)系,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10

