一个简单的对任意list分页的工具-----PageUtil
一、工具类代码
1 import java.util.List;
2 import java.util.stream.Collectors;
3
4 public class PageUtil<T> {
5 /**
6 * 实体类列表
7 */
8 List<T> content;
9 /**
10 * 是否首页
11 */
12 boolean first;
13 /**
14 * 是否尾页
15 */
16 boolean last;
17 /**
18 * 总记录数
19 */
20 Integer totalElements;
21 /**
22 * 总页数
23 */
24 Integer totalPages;
25
26 Integer numberOfElements;
27 /**
28 * 每页记录数
29 */
30 Integer size;
31 /**
32 * 当前页
33 */
34 Integer number;
35
36 @Override
37 public String toString() {
38 return "PageUtil{" +
39 "content=" + content +
40 ", first=" + first +
41 ", last=" + last +
42 ", totalElements=" + totalElements +
43 ", totalPages=" + totalPages +
44 ", numberOfElements=" + numberOfElements +
45 ", size=" + size +
46 ", number=" + number +
47 '}';
48 }
49
50 public List<T> getContent() {
51 return content;
52 }
53
54 public boolean isFirst() {
55 return first;
56 }
57
58 public boolean isLast() {
59 return last;
60 }
61
62 public Integer getTotalElements() {
63 return totalElements;
64 }
65
66 public Integer getTotalPages() {
67 return totalPages;
68 }
69
70 public Integer getNumberOfElements() {
71 return numberOfElements;
72 }
73
74 public Integer getSize() {
75 return size;
76 }
77
78 public Integer getNumber() {
79 return number;
80 }
81
82 public void pageUtil(Integer page, Integer size, List<T> list){
83 List<T> list1=list.stream ().skip (page*size).limit (size).collect(Collectors.toList());
84 int length=list.size ();
85 this.first=(page==0);//是否第一页
86 this.last= (page==(length-1)/size);//是否最后一页
87 this.totalPages =((length-1)/size+1);//总页数
88 this.totalElements= (length);//总elements
89 this.size= (size);//每页多少elements
90 this.content= (list1);//内容
91 this.numberOfElements =(list1.size ());//当前页elements
92 this.number= (page);//当前页数,第一页是0
93 }
94 }
二、测试
import java.util.Arrays;
import java.util.List; public class PageTest {
public static void main(String[] args) {
int page=1;
int size=5;
List<String> stringList= Arrays.asList ("1","2","3","4","5","6","7","8","9","10","11","12","13","14");
List<Integer> integerList=Arrays.asList (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
PageUtil<String> stringPageUtil=new PageUtil<> ();
stringPageUtil.pageUtil (page,size,stringList);
PageUtil<Integer> integerPageUtil=new PageUtil<> ();
integerPageUtil.pageUtil (page,size,integerList);
System.out.println (stringPageUtil);
System.out.println ("==========================================");
System.out.println (integerPageUtil);
}
}
三、结果
PageUtil{content=[6, 7, 8, 9, 10], first=false, last=false, totalElements=14, totalPages=3, numberOfElements=5, size=5, number=1}
==========================================
PageUtil{content=[6, 7, 8, 9, 10], first=false, last=false, totalElements=14, totalPages=3, numberOfElements=5, size=5, numbe
一个简单的对任意list分页的工具-----PageUtil的更多相关文章
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...
- ruby利用Zip Gem写一个简单的压缩和解压的小工具
在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合K ...
- 我写了一个简单的JSON序列化和反序列化的工具
背景 互联网上有许多可用的Json序列化和反序列化的工具,例如fastjson,jackson,Gson等等,那么,我为什么还要自己写一个? 项目不方便依赖其他第三方库.比如有时候我们编写SDK,考虑 ...
- 分享一个简单的C#的通用DbHelper类(支持数据连接池)
每次新项目的时候,都要从头去找一遍数据库工具类.这里分享一个简单实用的C#的通用DbHelper工具类,支持数据连接池. 连接池配置 <connectionStrings> <add ...
- asp.net mvc4+mysql做一个简单分页组件(部分视图)
在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstr ...
- 只是一个用EF写的一个简单的分页方法而已
只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- 使用MongoDB和JSP实现一个简单的购物车系统
目录 1 问题描述 2 解决方案 2.1 实现功能 2.2 最终运行效果图 2.3 系统功能框架示意图 2.4 有关MongoDB简介及系统环境配置 2.5 核心功能代码讲解 ...
- 一个简单的消息提示jquery插件
最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...
随机推荐
- 递归算法+sql三种分页
using Maticsoft.Common; using System; using System.Collections.Generic; using System.Data; using Sys ...
- vuex 入坑篇
Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 这个状态自管理应用包含 ...
- Python爬虫与一汽项目【一】爬取中海油,邮政,国家电网问题总结
项目介绍 中国海洋石油是爬取的第一个企业,之后依次爬取了,国家电网,中国邮政,这三家公司的源码并没有多大难度, 采购信息地址: 国家电网电子商务平台 http://ecp.sgcc.com.cn/pr ...
- future then
import 'dart:async'; main(){ Future(()=>a1()) .then((x)=>a2(x)) .then((x)=>a3(x)) .then((x) ...
- shell 环境变量的相关配置文件和配置方法
shell 环境变量的相关配置文件和配置方法: bash 的配置文件: 全局配置: /etc/profile, /etc/profile.d/*.sh, /etc/bashrc 个人配置 ~/.bas ...
- Pdf Convert Image 的解决方案
brew uninstall ghostscript brew install ghostscript gs -dNOPAUSE -sDEVICE=jpeg -r150 -sOutputFile=./ ...
- sshpass安装使用
部署sshpass1.下载wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz 2. ...
- Overture里镲片的使用
在我们使用Overture进行作曲编曲时,往往会增添很多乐器设备来使我们的乐器更丰富,今天我们来一起看看Overture里镲片怎么使用以及它在Overture的什么位置呢? 镲片,是一种乐器,通常指爵 ...
- Mybatis Generator代码自动生成(实体类、dao层、映射文件)
写了一段时间增删改查有点厌烦,自己找了下网上的例子鼓捣了下自动生成. 首先得有一个配置文件: generatorConfig.xml <?xml version="1.0" ...
- 最大子段和的DP算法设计及其效率测试
表情包形象取自番剧<猫咪日常> 那我也整一个 曾几何时,笔者是个对算法这个概念漠不关心的人,由衷地感觉它就是一种和奥数一样华而不实的存在,即便不使用任何算法的思想我一样能写出能跑的程序 直 ...