/*** @version 1.0* @author: fwjia*/
import java.util.List;public class PageModel<T> {/**** 当前页*/private int page = 1;/**** 总页数*/public int totalPages = 0;/**** 每页数据条数*/private int pageRecorders;/**** 总页数*/private int totalRows = 0;/**** 每页的起始数*/private int pageStartRow = 0;/**** 每页显示数据的终止数*/private int pageEndRow = 0;/**** 是否有下一页*/private boolean hasNextPage = false;/**** 是否有前一页*/private boolean hasPreviousPage = false;/**** 数据集合*/private List<T> list;public PageModel(List<T> list, int pageRecorders) {// 通过对象集,记录总数划分init(list, pageRecorders);}/** *//*** 初始化list,并告之该list每页的记录数* @param list 数据几个* @param pageRecorders 一页显示多少数据*/public void init(List<T> list, int pageRecorders) {this.pageRecorders = pageRecorders;this.list = list;totalRows = list.size();hasPreviousPage = false;if ((totalRows % pageRecorders) == 0) {totalPages = totalRows / pageRecorders;} else {totalPages = totalRows / pageRecorders + 1;}if (page >= totalPages) {hasNextPage = false;} else {hasNextPage = true;}if (totalRows < pageRecorders) {this.pageStartRow = 0;this.pageEndRow = totalRows;} else {this.pageStartRow = 0;this.pageEndRow = pageRecorders;}}// 判断要不要分页public boolean isNext() {return list.size() > 5;}public void setHasPreviousPage(boolean hasPreviousPage) {this.hasPreviousPage = hasPreviousPage;}public String toString(int temp) {String str = Integer.toString(temp);return str;}public void description() {String description = "共有数据数:" + this.getTotalRows() +"共有页数: " + this.getTotalPages() +"当前页数为:" + this.getPage() +" 是否有前一页: " + this.isHasPreviousPage() +" 是否有下一页:" + this.isHasNextPage() +" 开始行数:" + this.getPageStartRow() +" 终止行数:" + this.getPageEndRow();System.out.println(description);}public List getNextPage() {page = page + 1;disposePage();System.out.println("用户凋用的是第" + page + "页");this.description();return getObjects(page);}/*** 处理分页*/private void disposePage() {if (page == 0) {page = 1;}if ((page - 1) > 0) {hasPreviousPage = true;} else {hasPreviousPage = false;}if (page >= totalPages) {hasNextPage = false;} else {hasNextPage = true;}}public List getPreviousPage() {page = page - 1;if ((page - 1) > 0) {hasPreviousPage = true;} else {hasPreviousPage = false;}if (page >= totalPages) {hasNextPage = false;} else {hasNextPage = true;}this.description();return getObjects(page);}/*** 获取第几页的内容** @param page 当前页面* @return*/public List<T> getObjects(int page) {if(page == 0){this.setPage(1);}else{this.setPage(page);}this.disposePage();if (page * pageRecorders < totalRows) {// 判断是否为最后一页pageEndRow = page * pageRecorders;pageStartRow = pageEndRow - pageRecorders;} else {pageEndRow = totalRows;pageStartRow = pageRecorders * (totalPages - 1);}List<T> objects = null;if (!list.isEmpty()) {objects = list.subList(pageStartRow, pageEndRow);}//this.description();return objects;}public List<T> getFistPage() {if (this.isNext()) {return list.subList(0, pageRecorders);} else {return list;}}public boolean isHasNextPage() {return hasNextPage;}public void setHasNextPage(boolean hasNextPage) {this.hasNextPage = hasNextPage;}public List getList() {return list;}public void setList(List list) {this.list = list;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getPageEndRow() {return pageEndRow;}public void setPageEndRow(int pageEndRow) {this.pageEndRow = pageEndRow;}public int getPageRecorders() {return pageRecorders;}public void setPageRecorders(int pageRecorders) {this.pageRecorders = pageRecorders;}public int getPageStartRow() {return pageStartRow;}public void setPageStartRow(int pageStartRow) {this.pageStartRow = pageStartRow;}public int getTotalPages() {return totalPages;}public void setTotalPages(int totalPages) {this.totalPages = totalPages;}public int getTotalRows() {return totalRows;}public void setTotalRows(int totalRows) {this.totalRows = totalRows;}public boolean isHasPreviousPage() {return hasPreviousPage;}}

  测试类TestPagerModel

import java.util.ArrayList;
import java.util.List;/*** @version 1.0* @author: fwjia*/
public class TestPagerModel {public static void main(String args[]) {List<String> list = new ArrayList<String>();list.add("a");list.add("b");list.add("c");list.add("d");list.add("e");list.add("f");list.add("g");list.add("h");list.add("h");list.add("i");list.add("j");list.add("k");list.add("l");list.add("m");PageModel<String> pm = new PageModel(list, 5);List<String> sublist = pm.getObjects(2);for(int i = 0; i < sublist.size(); i++) {System.out.println(sublist.get(i));}}}

转载于:https://www.cnblogs.com/jiafuwei/p/10096183.html

JAVA List集合转Page(分页对象)相关推荐

  1. JAVA List集合转Page(分页对象) java 分页 PageModel 测试类TestPagerModel

    http://www.blogjava.net/jzone/archive/2015/06/05/308842.html?opt=admin /**  * @version 1.0  * @autho ...

  2. java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  3. java 泛型集合 json_将泛型集合转换成分页json数据

    [java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...

  4. Java中的Set集合接口实现插入对象不重复的原理

    当使用set集合时,是需要重写set相关类的hashCode和equals方法的. 在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .       如 ...

  5. java基础—TreeSet集合中储存自定义对象(java集合二)

    TreeSet集合中储存学生对象,按照其年龄进行排序 TreeSet对元素进行排序的方式一: 让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法. TreeSe ...

  6. Java——(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age) (2)定义Map集合,用Student对象作为key

    分析以下需求,并用代码实现: (1)定义一个学生类Student,包含属性:姓名(String name).年龄(int age) (2)定义Map集合,用Student对象作为key,用字符串(此表 ...

  7. Java系列之:ObjectMapper实现对象转化为Json、集合转化为Json、Json转化为对象、Json转化为JsonNode、JsonNode转化为Json字符串

    Java系列之:ObjectMapper实现对象转化为Json.集合转化为Json.Json转化为对象.Json转化为JsonNode.JsonNode转化为Json字符串 一.创建类Dataset ...

  8. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  9. cookie存值和page分页

    一.page分页 1.dao层 List<ClaimVoucher> findAll(@Param("map")HashMap<String,Object> ...

最新文章

  1. linux下bus、devices和platform的基础模型
  2. 通俗理解注意力机制中的Q、K和V表示的具体含义
  3. Hessian RPC示例和基于Http请求的Hessian序列化对象传输
  4. 经典网络LeNet5看卷积神经网络各层的维度变化
  5. python自动化办公脚本下载-python自动化办公:文件篇(自动整理文件,一键完成)...
  6. [转载]从12306谈起验证码的架构
  7. boot.img详解
  8. mysql反向生成uml类图_UML类图自动生成,太爽了
  9. 软件开发工具(第2章:软件开发过程及其组织)
  10. 2021,你好哇!发个小红包可好~
  11. Solr集群安装Version5.5.2(cloud模式)
  12. r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...
  13. 排除表_【收藏】常见电气故障及排除故障方法
  14. 【零基础学Java】—Random的基本概述和使用(十二)
  15. 【数据结构笔记24】单源最短路(迪克斯拉Dijkstra算法),多源最短路(弗洛伊德Floyd算法)
  16. hdu 3255 Farming(扫描线)
  17. JAVA-初步认识-第四章-其他流程控制语句
  18. matlab数字信号处理与应用 张德丰,MATLAB数字信号处理与应用
  19. cms自动更新php文件,PHPCMS站群管理系统-PHPCMS自动采集-PHPCMS自动更新
  20. 15kw科比服务器型号,伺服蜗轮蜗杆减速机枫信永磁同步11KW15KW型号涡轮蜗杆减速电机15.5KW7.5KW...

热门文章

  1. GARFIELD@12-30-2004
  2. php酷狗音乐json,用php来搜索酷狗音乐
  3. python计算汽车的平均油耗_用python对汽车油耗进行数据分析
  4. java citymap_Java实现Map集合二级联动
  5. java弹出虚拟键盘_JS实现电脑虚拟键盘的操作
  6. python动态时钟代码_python绘制动态时钟
  7. C排序算法:(三)插入排序
  8. Win32ASM-进程学习【2】
  9. linux在指定目录多个文件中搜索关键字
  10. .php y=mp4,PHP输出MP4视频流函数