`

JAVA中List集合分页

阅读更多
package com.brit.os.util;

import java.util.ArrayList;
import java.util.List;

/**
 * 通用分页工具类,该工具类分页指定泛型的List对集合
 * 
 * @author evan
 * @time 2010-01-12
 * @param <E>
 *            指定的泛型
 */
public class Page<E>
{
	/**
	 * 每页显示的记录数
	 */
	private int pageRecords = 20;

	/**
	 * 总记录数
	 */
	private int totalRecord;

	/**
	 * 分页切割的启始点
	 */
	private int startIndex;

	/**
	 * 分页切割的结束点
	 */
	private int endIndex;

	/**
	 * 总页数
	 */
	private int totalPage;

	/**
	 * 当前页数
	 */
	private int currentPage = 1;

	/**
	 * 总记录集合
	 */
	private List<E> totalList;

	public Page(List<E> totalList)
	{
		super();

		this.totalList = totalList;

		innit();
	}

	/**
	 * 初始化该分页对象
	 */
	private void innit()
	{
		if (null != totalList)
		{
			totalRecord = totalList.size();

			if (totalRecord % this.pageRecords == 0)
			{
				this.totalPage = totalRecord / this.pageRecords;
			}
			else
			{
				this.totalPage = totalRecord / this.pageRecords + 1;
			}
		}
	}

	/**
	 * 得到分页后的数据
	 * 
	 * @return 分页数据
	 */
	public List<E> getPage(int currentPage)
	{
		this.currentPage = currentPage;

		if (currentPage <= 0)
		{
			this.currentPage = 1;
		}
		if (currentPage >= this.totalPage)
		{
			this.currentPage = this.totalPage;
		}

		List<E> subList = new ArrayList<E>();

		if (null != this.totalList)
		{
			subList.addAll(this.totalList.subList(getStartIndex(), getEndIndex()));
		}

		return subList;
	}

	/**
	 * 设置每页显示的记录条数,如果不设置则默认为每页显示30条记录
	 * 
	 * @param pageRecords
	 *            每页显示的记录条数(值必需介于10~100之间)
	 */
	public void setPageRecords(int pageRecords)
	{
		if (pageRecords >= 10 && pageRecords <= 100)
		{
			this.pageRecords = pageRecords;

			innit();
		}
	}

	public int getStartIndex()
	{
		if (null == this.totalList)
		{
			return 0;
		}

		this.startIndex = (getCurrentPage() - 1) * this.pageRecords;

		if (startIndex > totalRecord)
		{
			startIndex = totalRecord;
		}

		if (startIndex < 0)
		{
			startIndex = 0;
		}

		return startIndex;
	}

	public int getEndIndex()
	{
		if (null == this.totalList)
		{
			return 0;
		}

		endIndex = getStartIndex() + this.pageRecords;

		if (endIndex < 0)
		{
			endIndex = 0;
		}

		if (endIndex < getStartIndex())
		{
			endIndex = getStartIndex();
		}

		if (endIndex > this.totalRecord)
		{
			endIndex = this.totalRecord;
		}

		return endIndex;
	}
	
	/***
	 * 获取总页数
	 * @return
	 */
	public int getTotalPage()
	{
		return totalPage;
	}
	
	/**
	 * 获取List集合中的总条数
	 * @return
	 */
	public int getTotalRecord()
	{
		return totalRecord;
	}

	public boolean isEndPage()
	{
		return this.currentPage == this.totalPage;
	}

	/**
	 * 获取下一页的页数
	 * 
	 * @return 下一页的页数
	 */
	public int getNextPage()
	{
		int nextPage = this.currentPage + 1;

		if (nextPage > this.totalPage)
		{
			nextPage = this.totalPage;
		}
		if (nextPage <= 0)
		{
			nextPage = 1;
		}

		return nextPage;
	}

	/**
	 * 获取上一页的页数
	 * 
	 * @return 上一页的页数
	 */
	public int getPrivyPage()
	{
		int privyPage = this.currentPage - 1;

		if (privyPage > this.totalPage)
		{
			privyPage = this.totalPage;
		}

		if (privyPage <= 0)
		{
			privyPage = 1;
		}

		return privyPage;
	}
	
	/**
	 * 获取当前页页数
	 * @return
	 */
	public int getCurrentPage()
	{
		return currentPage;
	}
}

 

分享到:
评论

相关推荐

    java中List集合分页的方法

    java中List集合分页的方法

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    Java中List对象的分页思想-按10个或者n个数对list进行分组 Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n...

    List集合分页工具类,正在使用的。

    该工具类提供带范型的分页方法。你只要的创建该对象的时候把List传进去就可以,可以自己设置每页展示几条数据,方法上都有注释。如果还有不明白的欢迎给我留言。

    集合分页.zip

    在Java编程中,集合分页是一项常见的需求,特别是在处理大量数据时,为了提高用户体验和系统性能,我们需要将数据分批次地展示,而不是一次性加载所有数据。"集合分页.zip"这个压缩包文件可能包含了实现这一功能的...

    list分页,可直接用

    在描述中提到的“通过list集合分页”,暗示了这个方法可能基于Java中的List接口或者类似的集合类来实现分页功能。List接口是Java集合框架的一部分,它允许我们存储和操作一组有序的对象。分页通常涉及到对数据进行...

    实现对List的分页

    在Java编程中,分页是数据管理中常见的一种需求,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分批加载。本示例主要讲解如何利用List接口的获取子List方法来实现对List的分页功能。这个过程涉及到Java...

    javaList分页方法

    java 对listj集合的分页方法 直接调用这个方法就可以了

    list 假分页的demo

    在Java或其他支持list的数据结构的编程语言中,假分页可以通过以下步骤实现: - 首先,将整个数据集加载到一个list对象中。 - 然后,根据每页显示的条目数和当前页码计算出起始和结束索引。 - 最后,从list中...

    java自定义分页标签实现带条件的分页查询

    在Java开发中,分页查询是一项常见的需求,尤其是在构建大型Web应用时,为了提高用户体验,通常需要对大量的数据进行分页展示。本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者...

    java中对list分页并显示数据到页面实例代码

    Java 中对 List 分页并显示数据到页面实例代码是指在 Java 项目中,对 List 集合进行分页处理,并将分页后的数据显示到页面上。这种处理方式可以避免一次性加载大量数据,提高系统的性能和响应速度。 在 Java 中,...

    Java List分页功能实现代码实例

    Java List分页功能实现代码实例是指在Java编程语言中实现List集合的分页功能,即将一个较大的List集合分割成多个小的List集合,以便于在界面上进行数据展示和处理。在实际开发中,List分页功能非常重要,因为它可以...

    java 分页通用代码

    1. **Page对象**:描述一个分页的信息,包括当前页码(currentPage)、每页大小(pageSize)、总记录数(total)以及数据集合(list)。例如: ```java public class Page&lt;T&gt; { private int currentPage; private ...

    java web中的struts分页组件

    总的来说,理解并掌握Struts中的分页机制对于Java Web开发者来说至关重要,这不仅可以提升应用的用户体验,还能有效提高服务器的运行效率。通过阅读`javaweb分页.txt`文件,您可以更深入地学习和理解这个主题。

    Java海量数据分页Bean

    功能描述:传入到达页码(具有容错性)、每页记录数、Select查询语句,返回该页所有的记录(整页是List集合,每条记录是一个 HashMap)、总行数、总页数、开始行数、结束行数。 注:此为3.0版,有清晰的注释,你可以...

    java简单分页

    在Java编程中,分页是数据管理中一个常见的需求,特别是在处理大数据集合时,为了提高用户体验和系统性能,我们通常不会一次性加载所有数据,而是采用分页的方式将数据分批展示。本文将深入探讨Java中如何实现简单的...

    动态分页算法java代码

    在Java中,我们可以使用集合类(如List、ArrayList等)或数据库查询(如JDBC、MyBatis等)来实现动态分页。以下是一个简单的Java代码示例,基于List实现动态分页: ```java public class Pagination { private int...

    Java Web中分页标签的使用说明

    这里`yourList`是后台传递给JSP的数据集合,`pagesize`表示每页显示的记录数,`property1`和`property2`是列表中对象的属性,用于显示在表格中。`&lt;display:pager/&gt;`标签则用于生成分页链接。 在后台,你需要处理...

    很好的集合分页代码

    在这个场景中,"集合"通常指的是编程中的数据结构,如Java的List或C#的IEnumerable,它们存储了一组相关对象。 实现集合分页的关键步骤包括: 1. **计算总页数**:根据每页显示的条目数(也称为页大小)和集合的总...

    jquery实现数组array、集合list、json类型的分页支持多个分页

    在Java中,List接口提供了如`.size()`用于获取元素数量,`.subList()`用于获取子列表。我们可以结合这些方法,根据当前页码和每页数量来截取List中的部分数据。 JSON类型的分页则涉及到数据解析。JSON是一种轻量级...

Global site tag (gtag.js) - Google Analytics