首页 > 其他分享 >将List对象数据集合转为PageInfo分页结构

将List对象数据集合转为PageInfo分页结构

时间:2023-09-15 09:44:08浏览次数:78  
标签:分页 int List pages list PageInfo data page size

之前用到一个项目  就是将List数据转成PageInfo的分页结构  手写的一个转换格式
应该还有别的解决办法 好像应该可以直接转 后面有时间再研究研究



import com.github.pagehelper.PageInfo;


/**
* @Description: 缓存数据分页 用来替代pagehelp 自动分页方法
* @Param: [page 页码, size 板数, data 缓存数据集合]
**/
public <T>PageInfo<T> getRedisDataPage(Integer page,Integer size,List<T> data){
PageInfo<T> list = new PageInfo<>();
Integer startIndex = (page - 1) * size;
Integer endIndex = Math.min(page * size, data.size());
int total = data.size();

int pages = total%size==0?total/size:(total/size)+1;

data = data.stream()
.skip(startIndex)
.limit(endIndex-startIndex)
.collect(Collectors.toList());


list.setNavigateFirstPage(page>=6?(page-4):1);
list.setNavigateLastPage(total<size?1:list.getNavigateFirstPage()+7);

int pnums[] = null;
int navigateFirstPage = list.getNavigateFirstPage();
if(pages>8){
pnums = new int[8];
for (int i = 0; i < 8; i++) {
pnums[i]=navigateFirstPage;
navigateFirstPage++;
}
}else {
pnums = new int[pages];
for (int i = 0; i < pages; i++) {
pnums[i]=i+1;
}
}


list.setHasNextPage(!(page>=pages));
list.setIsFirstPage(page==1);
list.setIsLastPage(page==pages);
list.setLastPage(list.getNavigateLastPage());
list.setFirstPage(list.getNavigateFirstPage());
list.setList(data);
list.setPageNum(page);
list.setPageSize(size);
list.setPages(pages);
list.setNavigatePages(8);
list.setNextPage(page>=pages?0:page+1);
list.setPrePage(page-1);
list.setHasPreviousPage(!(page==1));

list.setStartRow((page-1)*size+1);
list.setEndRow(total<size?total:page*size);

list.setSize(data.size());

list.setNavigatepageNums(pnums);

list.setTotal(total);

return list;
}

  

标签:分页,int,List,pages,list,PageInfo,data,page,size
From: https://www.cnblogs.com/YinXuanZhiZhi9/p/17704139.html

相关文章

  • ros2迁移c++之package.xml、CMakeLists.txt及编译
    1、package.xml<package><!--1.根标签--> <name><!--2.包名--> <version><!--3.版本号--> <description><!--4.包描述--> <maintainer><!--5.维护者--> <......
  • java中有哪些并发的List?只知道一种的就太逊了
    java中有很多list,但是原生支持并发的并不多,我们在多线程的环境中如果想同时操作同一个list的时候,就涉及到了一个并发的过程,这时候我们就需要选择自带有并发属性的list,那么java中的并发list到底有哪些呢?今天要给大家介绍的是ArrayList、CopyOnWriteArrayList、ConcurrentLinkedDeque......
  • List<Map>根据属性排序
    第二种排序法:倒叙:list.sort((o1,o2)->o2.get("UTILIZSIZE").toString().compareTo(o1.get("UTILIZSIZE").toString()));正序:list.sort((o1,o2)->o1.get("UTILIZSIZE").toString().compareTo(o2.get("UTILIZSIZE").toString(......
  • oracle 分页 sql
    select*from(select*from(selectt.*,rownumlinenumfromgal_messagest)rwherer.linenum<200)awherea.linenum>100Note:一定要给rownum一个别名linenum,否则r.rownum或a.rownum会出错.OracleConnectBy用法参照:[url]http://www.cublog.cn/u1/54706/showart......
  • Lucene分页方式(转)
    推荐的做法是为每一次分页导航都执行一次新的查询。因为Hits中保存的并不是真正的Document,因此可以通过HIts.doc(index)的方式取出在一定范围内的Document。在获得Hits后可以用类似下面的方法进行分页处理:privateListprocessHits(Hitshits,intstartIn......
  • 比较分析Vector、ArrayList和hashtable hashmap数据结构
    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。[color=green][b]Collection├List│├LinkedList│├ArrayL......
  • 逗号分隔的字符串与List互转-----字符串与数组互转
    1.字符串转数组使用Java split()方法split()方法根据匹配给定的正则表达式来拆分字符串。注意:.、|和*等转义字符,必须得加\。多个分隔符,可以用|作为连字符。//字符串转数组java.lang.StringStringstr="0,1,2,3,4,5";String[]arr=str.split(",");//用......
  • ArrayList和LinkedList的区别
    1.顾名思义,前者底层数据结构采用数组结构,通过索引来实现快速随机访问元素;而后者采用双向链表结构,每个元素都包含一个指向前一个元素和后一个元素的引用,所以插入,删除元素效率很高。2.时间复杂度不同,前者为O1,为常量复杂度,执行一次,后者为On,从头部或尾部开始执行N次。3.前者占用的空......
  • Python list replication All In One
    PythonlistreplicationAllInOneerrorForthereferencevaluelist,usingthelist*numberdoesnotworkasyouexpected.#referencevaluelistletter_lists=[['A','B']]number_lists=[[1,2]]strs=letter_lists*2nums=n......
  • restTemplate接收返回对象中的数据为list是集合被转为对象问题处理
    接收的对象resultModel是服务者接口自定义的返回对象,包含msg,code,以及一个泛型对象data用于存放接口返回的数据。 当消费者通过restTemplate,postObject调用时,data需要通过map封装一下需要返回的数据,然后将map填充到data。若map中出现了集合数据,当集合数据只有一条时,会出现集合......