- 浏览: 101557 次
- 性别:
- 来自: 北京
文章分类
最新评论
引自:http://www.blogjava.net/jzone/articles/308842.html
应用类:
package com.Gavin.tools.util;
/** *//**
* List分页
* 实现:利用List的获取子List方法,实现对List的分页
* @author 显武
* @date 2010-1-8 16:27:31
*
*/
import java.util.ArrayList;
import java.util.List;
public class PageModel {
private int page = 1; // 当前页
public int totalPages = 0; // 总页数
private int pageRecorders;// 每页5条数据
private int totalRows = 0; // 总数据数
private int pageStartRow = 0;// 每页的起始数
private int pageEndRow = 0; // 每页显示数据的终止数
private boolean hasNextPage = false; // 是否有下一页
private boolean hasPreviousPage = false; // 是否有前一页
private List list;
// private Iterator it;
public PageModel(List list, int pageRecorders) {
init(list, pageRecorders);// 通过对象集,记录总数划分
}
/** *//**
* 初始化list,并告之该list每页的记录数
* @param list
* @param pageRecorders
*/
public void init(List list, int pageRecorders) {
this.pageRecorders = pageRecorders;
this.list = list;
totalRows = list.size();
// it = list.iterator();
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 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 objects = null;
if (!list.isEmpty()) {
objects = list.subList(pageStartRow, pageEndRow);
}
//this.description();
return objects;
}
public List 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;
}
}
测试类:
package com.Gavin.tools.util;
import java.util.ArrayList;
import java.util.List;
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 pm = new PageModel(list, 5);
List sublist = pm.getObjects(3);
for(int i = 0; i < sublist.size(); i++) {
System.out.println(sublist.get(i));
}
System.out.println(sublist.get(0));
}
}
应用类:
package com.Gavin.tools.util;
/** *//**
* List分页
* 实现:利用List的获取子List方法,实现对List的分页
* @author 显武
* @date 2010-1-8 16:27:31
*
*/
import java.util.ArrayList;
import java.util.List;
public class PageModel {
private int page = 1; // 当前页
public int totalPages = 0; // 总页数
private int pageRecorders;// 每页5条数据
private int totalRows = 0; // 总数据数
private int pageStartRow = 0;// 每页的起始数
private int pageEndRow = 0; // 每页显示数据的终止数
private boolean hasNextPage = false; // 是否有下一页
private boolean hasPreviousPage = false; // 是否有前一页
private List list;
// private Iterator it;
public PageModel(List list, int pageRecorders) {
init(list, pageRecorders);// 通过对象集,记录总数划分
}
/** *//**
* 初始化list,并告之该list每页的记录数
* @param list
* @param pageRecorders
*/
public void init(List list, int pageRecorders) {
this.pageRecorders = pageRecorders;
this.list = list;
totalRows = list.size();
// it = list.iterator();
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 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 objects = null;
if (!list.isEmpty()) {
objects = list.subList(pageStartRow, pageEndRow);
}
//this.description();
return objects;
}
public List 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;
}
}
测试类:
package com.Gavin.tools.util;
import java.util.ArrayList;
import java.util.List;
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 pm = new PageModel(list, 5);
List sublist = pm.getObjects(3);
for(int i = 0; i < sublist.size(); i++) {
System.out.println(sublist.get(i));
}
System.out.println(sublist.get(0));
}
}
发表评论
-
时间格式转为毫秒
2011-11-04 19:36 1117sbSql.append(" select c ... -
枚举 7种用法
2011-10-10 11:05 762public enum Color { ... -
ExecutorService线程池
2011-09-13 09:33 803引自:http://blog.sina.com.cn/s/bl ... -
文件复制通道
2011-08-15 10:44 654fromFile.exists() fromFile.isFi ... -
序列化,实体类存在memcache中必须要序列化
2011-08-02 09:55 5302转westlifesz的博文 序列化就是一种用来处理对象流的 ... -
从clob字段中取值
2011-07-19 12:16 1424Clob clobtmp = (Clob)rs.getClob ... -
HashMap遍历的两种方式
2011-07-08 15:26 634第一种: Map map = new HashMap(); ... -
static方法 内部类和静态修饰符static
2011-06-27 14:57 1040声明为static的变量实质上就是全局变量。当声明一个对象时, ... -
oracle jdbc 获取自动生成的键值,int id primary key auto_increment;
2011-06-27 14:23 4801用jdbc getGenerationKey属性 ===== ...
相关推荐
Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n个。这种技术可以用于解决大规模数据的处理问题,例如批量...
在Java编程中,数据分页显示是Web应用中常见的需求,尤其在处理大量数据时,为了提高用户体验并优化服务器性能,通常需要将数据分成多个页面进行展示。本篇将深入探讨Java实现数据分页显示的核心技术和策略。 首先...
Java分页组件是一种在开发Java Web应用程序时非常实用的工具,它可以帮助开发者高效地处理大量数据的展示,尤其是在用户需要浏览或操作大量记录时。在Web应用中,通常不建议一次性加载所有数据到客户端,因为这可能...
在Java编程中,分页是数据管理中常见的一种需求,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分批加载。本示例主要讲解如何利用List接口的获取子List方法来实现对List的分页功能。这个过程涉及到Java...
在Java开发中,特别是在Web应用中,分页功能是数据展示中不可或缺的一部分。合理的分页不仅能够提升用户体验,还能优化服务器性能,避免一次性加载大量数据导致的延迟和资源消耗。下面,我们将深入探讨一个Java通用...
Java List分页功能实现代码实例是指在Java编程语言中实现List集合的分页功能,即将一个较大的List集合分割成多个小的List集合,以便于在界面上进行数据展示和处理。在实际开发中,List分页功能非常重要,因为它可以...
在IT行业中,分页是一种常见的数据展示方式,特别是在网页或应用程序中处理大量数据时。"假分页"(也称为虚拟分页)是一种优化策略,它并不真正地从数据库或其他数据源获取每一页的数据,而是将整个数据集一次性加载...
Java 分页技术是大型Web应用中不可或缺的一部分,它允许用户以较小的数据量逐步浏览大量数据库记录,提升用户体验并减轻服务器压力。本资源提供了一个完整的Java分页代码实现,包括注释,非常适合初学者学习和实践。...
### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...
在Java开发中,分页是Web应用程序中非常常见的一种功能,它主要用于处理大量数据时,提高用户体验,避免一次性加载所有数据导致页面响应慢或者内存压力过大。本案例以"JAVA数字分页案例"为主题,结合SpringMVC和...
在网页应用中,分页通常用于展示数据库查询结果,避免一次性加载所有数据导致页面响应速度变慢或消耗过多资源。本文将深入探讨Java后端与JavaScript前端如何协同实现分页功能。 首先,我们来理解分页的基本概念。...
在Java编程中,分页是数据管理中一个常见的需求,特别是在处理大数据集时,为了提高用户体验和系统性能,我们通常不会一次性加载所有数据,而是分批次地加载,这就是分页的基本概念。本教程将深入讲解如何使用Java...
在Java开发中,分页查询是一项常见的需求,尤其是在构建大型Web应用时,为了提高用户体验,通常需要对大量的数据进行分页展示。本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者...
在Java开发中,分页是数据检索中非常常见的一种需求,尤其在大数据量的应用场景下,为了提高用户体验和系统性能,通常需要实现分页查询功能。本通用代码着重讲解如何在Java中实现这一功能。 首先,我们需要理解分页...
Java 后台分页是Web应用开发中一个常见的需求,特别是在大数据量的场景下,为了提高用户体验和系统性能,分页技术显得尤为重要。本篇将详细介绍如何在Java中实现后台分页,包括SQL语句的分页、Hibernate的分页以及...
"list分页,可直接用"的标题表明这是一个无需依赖任何特定框架或插件的分页解决方案,适合那些希望保持代码简洁、自定义程度高的开发者使用。 在描述中提到的“通过list集合分页”,暗示了这个方法可能基于Java中的...
在处理大量数据时,分页查询是一种有效的策略,可以提高应用程序的性能,避免一次性加载过多数据导致内存压力。Oracle数据库作为一款广泛使用的商业数据库系统,经常在企业级应用中被采用。本篇文章将重点讨论如何...
在Java开发中,数据库操作是不可或缺的一部分,尤其是与Web应用结合时。MySQL作为一个高效、开源的关系型数据库管理系统,被广泛用于存储和检索数据。在这个"MySQL_数据库实现的JAVA_分页实例"中,我们将探讨如何在...
在Java编程中,逻辑分页是一种常见的数据处理技术,特别是在Web应用中,用于展示大量数据时,以提高用户体验和性能。逻辑分页不同于物理分页,物理分页是在数据库层面进行数据切片,而逻辑分页则是在应用程序层面上...
Java中的分页功能是数据库操作中非常常见的一种技术,它允许我们从大量数据中按需获取部分信息,提高用户体验并减少服务器压力。本示例将详细介绍如何在Java中实现分页,以及涉及到的关键知识点。 首先,我们需要...