1. /**
  2. * @version 1.0
  3. * @author: fwjia
  4. */
  5. import java.util.List;
  6.  
  7. public class PageModel<T> {
  8. /***
  9. * 当前页
  10. */
  11. private int page = 1;
  12.  
  13. /***
  14. * 总页数
  15. */
  16. public int totalPages = 0;
  17.  
  18. /***
  19. * 每页数据条数
  20. */
  21. private int pageRecorders;
  22.  
  23. /***
  24. * 总页数
  25. */
  26. private int totalRows = 0;
  27.  
  28. /***
  29. * 每页的起始数
  30. */
  31. private int pageStartRow = 0;
  32.  
  33. /***
  34. * 每页显示数据的终止数
  35. */
  36. private int pageEndRow = 0;
  37.  
  38. /***
  39. * 是否有下一页
  40. */
  41. private boolean hasNextPage = false;
  42.  
  43. /***
  44. * 是否有前一页
  45. */
  46. private boolean hasPreviousPage = false;
  47.  
  48. /***
  49. * 数据集合
  50. */
  51. private List<T> list;
  52.  
  53. public PageModel(List<T> list, int pageRecorders) {
  54. // 通过对象集,记录总数划分
  55. init(list, pageRecorders);
  56. }
  57.  
  58. /** *//**
  59. * 初始化list,并告之该list每页的记录数
  60. * @param list 数据几个
  61. * @param pageRecorders 一页显示多少数据
  62. */
  63. public void init(List<T> list, int pageRecorders) {
  64. this.pageRecorders = pageRecorders;
  65. this.list = list;
  66. totalRows = list.size();
  67. hasPreviousPage = false;
  68. if ((totalRows % pageRecorders) == 0) {
  69. totalPages = totalRows / pageRecorders;
  70. } else {
  71. totalPages = totalRows / pageRecorders + 1;
  72. }
  73.  
  74. if (page >= totalPages) {
  75. hasNextPage = false;
  76. } else {
  77. hasNextPage = true;
  78. }
  79.  
  80. if (totalRows < pageRecorders) {
  81. this.pageStartRow = 0;
  82. this.pageEndRow = totalRows;
  83. } else {
  84. this.pageStartRow = 0;
  85. this.pageEndRow = pageRecorders;
  86. }
  87. }
  88.  
  89. // 判断要不要分页
  90. public boolean isNext() {
  91. return list.size() > 5;
  92. }
  93.  
  94. public void setHasPreviousPage(boolean hasPreviousPage) {
  95. this.hasPreviousPage = hasPreviousPage;
  96. }
  97.  
  98. public String toString(int temp) {
  99. String str = Integer.toString(temp);
  100. return str;
  101. }
  102.  
  103. public void description() {
  104.  
  105. String description = "共有数据数:" + this.getTotalRows() +
  106.  
  107. "共有页数: " + this.getTotalPages() +
  108.  
  109. "当前页数为:" + this.getPage() +
  110.  
  111. " 是否有前一页: " + this.isHasPreviousPage() +
  112.  
  113. " 是否有下一页:" + this.isHasNextPage() +
  114.  
  115. " 开始行数:" + this.getPageStartRow() +
  116.  
  117. " 终止行数:" + this.getPageEndRow();
  118.  
  119. System.out.println(description);
  120. }
  121.  
  122. public List getNextPage() {
  123. page = page + 1;
  124.  
  125. disposePage();
  126.  
  127. System.out.println("用户凋用的是第" + page + "页");
  128. this.description();
  129. return getObjects(page);
  130. }
  131.  
  132. /**
  133. * 处理分页
  134. */
  135. private void disposePage() {
  136.  
  137. if (page == 0) {
  138. page = 1;
  139. }
  140.  
  141. if ((page - 1) > 0) {
  142. hasPreviousPage = true;
  143. } else {
  144. hasPreviousPage = false;
  145. }
  146.  
  147. if (page >= totalPages) {
  148. hasNextPage = false;
  149. } else {
  150. hasNextPage = true;
  151. }
  152. }
  153.  
  154. public List getPreviousPage() {
  155.  
  156. page = page - 1;
  157.  
  158. if ((page - 1) > 0) {
  159. hasPreviousPage = true;
  160. } else {
  161. hasPreviousPage = false;
  162. }
  163. if (page >= totalPages) {
  164. hasNextPage = false;
  165. } else {
  166. hasNextPage = true;
  167. }
  168. this.description();
  169. return getObjects(page);
  170. }
  171.  
  172. /**
  173. * 获取第几页的内容
  174. *
  175. * @param page 当前页面
  176. * @return
  177. */
  178. public List<T> getObjects(int page) {
  179. if(page == 0){
  180. this.setPage(1);
  181. }
  182. else{
  183. this.setPage(page);
  184. }
  185. this.disposePage();
  186. if (page * pageRecorders < totalRows) {
  187. // 判断是否为最后一页
  188. pageEndRow = page * pageRecorders;
  189. pageStartRow = pageEndRow - pageRecorders;
  190. } else {
  191. pageEndRow = totalRows;
  192. pageStartRow = pageRecorders * (totalPages - 1);
  193. }
  194.  
  195. List<T> objects = null;
  196. if (!list.isEmpty()) {
  197. objects = list.subList(pageStartRow, pageEndRow);
  198. }
  199. //this.description();
  200. return objects;
  201. }
  202.  
  203. public List<T> getFistPage() {
  204. if (this.isNext()) {
  205. return list.subList(0, pageRecorders);
  206. } else {
  207. return list;
  208. }
  209. }
  210.  
  211. public boolean isHasNextPage() {
  212. return hasNextPage;
  213. }
  214.  
  215. public void setHasNextPage(boolean hasNextPage) {
  216. this.hasNextPage = hasNextPage;
  217. }
  218.  
  219. public List getList() {
  220. return list;
  221. }
  222.  
  223. public void setList(List list) {
  224. this.list = list;
  225. }
  226.  
  227. public int getPage() {
  228. return page;
  229. }
  230.  
  231. public void setPage(int page) {
  232. this.page = page;
  233. }
  234.  
  235. public int getPageEndRow() {
  236. return pageEndRow;
  237. }
  238.  
  239. public void setPageEndRow(int pageEndRow) {
  240. this.pageEndRow = pageEndRow;
  241. }
  242.  
  243. public int getPageRecorders() {
  244. return pageRecorders;
  245. }
  246.  
  247. public void setPageRecorders(int pageRecorders) {
  248. this.pageRecorders = pageRecorders;
  249. }
  250.  
  251. public int getPageStartRow() {
  252. return pageStartRow;
  253. }
  254.  
  255. public void setPageStartRow(int pageStartRow) {
  256. this.pageStartRow = pageStartRow;
  257. }
  258.  
  259. public int getTotalPages() {
  260. return totalPages;
  261. }
  262.  
  263. public void setTotalPages(int totalPages) {
  264. this.totalPages = totalPages;
  265. }
  266.  
  267. public int getTotalRows() {
  268. return totalRows;
  269. }
  270.  
  271. public void setTotalRows(int totalRows) {
  272. this.totalRows = totalRows;
  273. }
  274.  
  275. public boolean isHasPreviousPage() {
  276. return hasPreviousPage;
  277. }
  278.  
  279. }

  测试类TestPagerModel

  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. /**
  5. * @version 1.0
  6. * @author: fwjia
  7. */
  8. public class TestPagerModel {
  9.  
  10. public static void main(String args[]) {
  11. List<String> list = new ArrayList<String>();
  12. list.add("a");
  13. list.add("b");
  14. list.add("c");
  15. list.add("d");
  16. list.add("e");
  17. list.add("f");
  18. list.add("g");
  19. list.add("h");
  20. list.add("h");
  21. list.add("i");
  22. list.add("j");
  23. list.add("k");
  24. list.add("l");
  25. list.add("m");
  26. PageModel<String> pm = new PageModel(list, 5);
  27.  
  28. List<String> sublist = pm.getObjects(2);
  29. for(int i = 0; i < sublist.size(); i++) {
  30. System.out.println(sublist.get(i));
  31. }
  32. }
  33.  
  34. }

JAVA List集合转Page(分页对象)的更多相关文章

  1. java中集合Collection转list对象

    参考:java中集合Collection转list对象 首先我的需求是获取到购物车列表,购物车列表是一个Map对象,构造方法获取购物项,这里购物项是Collection对象 // 购物项集合,K商品I ...

  2. 将java类的泛型集合转换成json对象

    一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; imp ...

  3. Java 分页对象

    以前一直没有自己写过分页对象,自己模仿着写了一个分页对象,写完之后感觉也是挺简单的 package com.css.util; import java.io.Serializable;import j ...

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

    在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .      如果不相等,认为两个对象也不相等,完毕       如果相等,转入2)(这一点只是为了提 ...

  5. 集合框架的类和接口均在java.util包中。 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。

    集合框架的类和接口均在java.util包中. 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换.

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

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

  7. Java:集合,Collection接口框架图

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  8. ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢

    <!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...

  9. jstl标签forEach的用法--遍历java的集合

    再讲<c:forEach>之前,现讲一下让EL表达式生效的语句 <% @ page isELIgnored="false"%>这句语句在你想让EL表达式生效 ...

随机推荐

  1. Python3 迭代器,生成器,装饰器

    1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type( ...

  2. 第三课——MFC编程

    一.MFC概述 1. MFC简述 MFC不仅仅是一套基础类库,更是一种编程方式. 2. MFC由来 1987年微软公司推出了第一代Windows产品,并为应用程序设计者提供了Win16(16位Wind ...

  3. Thunder团队第五周 - Scrum会议6

    Scrum会议6 小组名称:Thunder 项目名称:i阅app Scrum Master:邹双黛 工作照片: 宋雨同学在拍照,所以不在照片内. 参会成员: 王航:http://www.cnblogs ...

  4. Python学习之路5 - 函数

    函数 定义方式: def func(): "这里面写函数的描述" 这里写代码 return x #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值 实 ...

  5. 新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!

    本教程适用于初学PHP,想了解手动搭建PHP环境的童鞋. 一键环境和高手勿喷. 本教程以下列版本软件为例: 所需软件目录 我在这里的目录结构是(个人习惯) 安装与配置 apache 双击安装Apach ...

  6. ubuntu apache nginx 启动 关闭

    转载自:http://www.comflag.com/2011/05/01/apache-web.htm 电影<社交网络>中,facebook创始人马克.扎克失恋后入侵哈佛大学宿舍楼服务器 ...

  7. 实现一个可以实时提示的textarea组件

    该组件输入.换行.变换光标可以实时给出提示 效果: textarea.vue <template> <div> <el-input id="user-input ...

  8. 简单名称值对节点类NameValuePair

    本类位于System.Data.dll中,名为:System.Data.Common.NameValuePair.主要用途是在DBConnectionString类中,解析ConnectionStri ...

  9. chrome extension demos

    chrome extension demos demo https://github.com/hartleybrody/buzzkill/blob/master/bootstrap.js https: ...

  10. 【Json】Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...