JAVA List集合转Page(分页对象)
- /**
- * @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));
- }
- }
- }
JAVA List集合转Page(分页对象)的更多相关文章
- java中集合Collection转list对象
参考:java中集合Collection转list对象 首先我的需求是获取到购物车列表,购物车列表是一个Map对象,构造方法获取购物项,这里购物项是Collection对象 // 购物项集合,K商品I ...
- 将java类的泛型集合转换成json对象
一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; imp ...
- Java 分页对象
以前一直没有自己写过分页对象,自己模仿着写了一个分页对象,写完之后感觉也是挺简单的 package com.css.util; import java.io.Serializable;import j ...
- Java中的Set集合接口实现插入对象不重复的原理
在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 . 如果不相等,认为两个对象也不相等,完毕 如果相等,转入2)(这一点只是为了提 ...
- 集合框架的类和接口均在java.util包中。 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。
集合框架的类和接口均在java.util包中. 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换.
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- Java:集合,Collection接口框架图
Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...
- ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢
<!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...
- jstl标签forEach的用法--遍历java的集合
再讲<c:forEach>之前,现讲一下让EL表达式生效的语句 <% @ page isELIgnored="false"%>这句语句在你想让EL表达式生效 ...
随机推荐
- Python3 迭代器,生成器,装饰器
1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type( ...
- 第三课——MFC编程
一.MFC概述 1. MFC简述 MFC不仅仅是一套基础类库,更是一种编程方式. 2. MFC由来 1987年微软公司推出了第一代Windows产品,并为应用程序设计者提供了Win16(16位Wind ...
- Thunder团队第五周 - Scrum会议6
Scrum会议6 小组名称:Thunder 项目名称:i阅app Scrum Master:邹双黛 工作照片: 宋雨同学在拍照,所以不在照片内. 参会成员: 王航:http://www.cnblogs ...
- Python学习之路5 - 函数
函数 定义方式: def func(): "这里面写函数的描述" 这里写代码 return x #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值 实 ...
- 新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!
本教程适用于初学PHP,想了解手动搭建PHP环境的童鞋. 一键环境和高手勿喷. 本教程以下列版本软件为例: 所需软件目录 我在这里的目录结构是(个人习惯) 安装与配置 apache 双击安装Apach ...
- ubuntu apache nginx 启动 关闭
转载自:http://www.comflag.com/2011/05/01/apache-web.htm 电影<社交网络>中,facebook创始人马克.扎克失恋后入侵哈佛大学宿舍楼服务器 ...
- 实现一个可以实时提示的textarea组件
该组件输入.换行.变换光标可以实时给出提示 效果: textarea.vue <template> <div> <el-input id="user-input ...
- 简单名称值对节点类NameValuePair
本类位于System.Data.dll中,名为:System.Data.Common.NameValuePair.主要用途是在DBConnectionString类中,解析ConnectionStri ...
- chrome extension demos
chrome extension demos demo https://github.com/hartleybrody/buzzkill/blob/master/bootstrap.js https: ...
- 【Json】Newtonsoft.Json高级用法
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...