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表达式生效 ...
随机推荐
- 【转载】完全版线段树 by notonlysuccess大牛
原文出处:http://www.notonlysuccess.com/ 今晚上比赛就考到了 排兵布阵啊,难受. [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时 ...
- Asp.net之数组应用
string[] abc=new string[8]{"1","2","3","4","1",&qu ...
- Docker: 如何修改 Docker 的镜像存储位置
我用的阿里云的服务器, 但是系统盘只有20G, 默认 Docker 的镜像文件是安装在/var/lib 目录下的, 这样的话我根本装不了太多的镜像... 这个必须得改改... 搜了下, 解决方案如下: ...
- POJ 3084 Panic Room(最大流最小割)
Description You are the lead programmer for the Securitron 9042, the latest and greatest in home sec ...
- Git 命令详解及常用命令
Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 1 2 3 4 Work ...
- ide的tomcat的部署和配置
关于intellij ide的tomcat的部署和配置 1.下载zip版的Tomcat 7,并解压.下载地址 2.在IDEA中配置Tomcat 7 在idea中的Settings(Ctrl+Alt ...
- Hadoop之block研究
本文翻译原链接:https://hadoopabcd.wordpress.com/2015/03/17/hdfs-file-blocks-distribution-in-datanodes/ ...
- ajax 返回值问题
错误示例:function returnFlag(){ $.ajax({ type:"post", dataType:"json", data:JSON.str ...
- 【Docker 命令】- images命令
docker images : 列出本地镜像. 语法 docker images [OPTIONS] [REPOSITORY[:TAG]] OPTIONS说明: -a :列出本地所有的镜像(含中间映像 ...
- Python的7种性能测试工具:timeit、profile、cProfile、line_profiler、memory_profiler、PyCharm图形化性能测试工具、objgraph
1.timeit: >>> import timeit >>> def fun(): ): a = i * i >>> timeit.timeit ...