List集合进行分页
/** 
* @ClassName: Text2 
* @Description: (集合的分页算法) 
* @author Luhan 
* @date 2017年3月16日 下午17:18:06
*/
public class Text1 {
	private static List<Integer> date;
	private static Integer PaseSize = 6;//显示多少条
	private static Integer mPageNum = 30;//总条数
public static void main(String[] args) {
		//传入的是显示第几页
		showList(2);
	}
	/**
	 * 显示数据,分页显示list里面的数据
	 * @param pageNum 页数
	 */
	public static void showList(int pageNum){
		date = new ArrayList<Integer>();
		for (int i = 0; i < mPageNum; i++) {
			date.add(i+1);
		}
		/**这里是决定一页只会显示6条
		 * 
		 * for循环的左边 i等于的值
		 * 当是第一页的时候 1  对  0;索引应该从0开始
		 * 当是第二页的时候 2  对  6;索引应该从6开始
		 * 当是第三页的时候 3  对  12;索引应该从12开始
		 * 当是第四页的时候 4  对  18;索引应该从18开始
		 * 			  .
		 * 			  .
		 * 			  .
		 * 			以此类推
		 * 当是第n页的时候索引就应该是从(当前页数-1)*显示条数
		 * 
		 * 
		 * 
		 * for循环的右边 i小于的值,这里假设只有20条数据
		 * 当是第一页的时候 1  对  0~6;右边的数应该为6
		 * 当是第一页的时候 2  对  6~12;右边的数应该为6
		 * 当是第一页的时候 3  对  12~18;右边的数应该为6
		 * 当是第一页的时候 4  对  18~20;右边的数应该为20,这里为什么会是20而不是24是因为我们只有20条数据,
		 * 显然i不能小于24,这样后面21、22、23根本就没有值,所以这应该是20
		 * 设 x = (当前页数-1)*显示条数;
		 * 最后得出右边的数值应该为:判断x是不是大于数据的总条数,如果大于就显示总条数,如果小于就显示x
		 * 所以这里我们可以使用三元运算符来解决就是下方的表达式
		 * ((pageNum-1)*PaseSize)+PaseSize > mPageNum ? mPageNum:((pageNum-1)*PaseSize)+PaseSize)
		 * 先判断下(当前是第几页-1乘以显示条数)是不是大于总条数,如果大于总条数就返回总条数,如果小于总条数则返回(当前是第几页-1乘以显示条数)
		 */
		List<Integer> newDate = new ArrayList<Integer>();
		for (int i = (pageNum-1)*PaseSize; i < (
				((pageNum-1)*PaseSize)+PaseSize > mPageNum ? mPageNum:((pageNum-1)*PaseSize)+PaseSize); i++) {
			newDate.add(date.get(i));
		}
		System.out.println(">>>>>>>>>>第"+pageNum+"页的数据>>>>>>>>>>>>");
		for (int i = 0; i < newDate.size(); i++) {
			System.out.println(newDate.get(i));
		}
	}	
}
如果想直接拿来使用的话,就直接复制下面的代码即可
/**
	 * 数据集合的分页方法,根据传入总共的数据跟页码,返回页码所需要显示多少条的数据
	 * <BR/>采用泛型的方法,即为,list中为什么类型的数据就返回什么类型的数据
	 * @param f 带有需要进行分页的数据集合
	 * @param pageNo 第几页
	 * @param dataSize 显示多少条数据
	 * @return 进过分页之后返回的数据
	 */
	public static <F> List<F> datepaging(List<F> f,int pageNo,int dataSize){
		/*
		 * 经过测试发现当pageNo为0或者小于时,也就是第0页时,程序会报错,所以需要处理一下pageNo的值
		 * 
		 * 先进行空值的判断,避免程序出现null异常
		 * 
		 * 当pageNo的值小于等于0时,我们让它的值为1
		 */
		//参数的校验
		if(f == null){//当传入过来的list集合为null时,先进行实例化
			f = new ArrayList<F>();
		}
		if((Object)pageNo == null){//当传入过来的pageNo为null时,先进行赋值操作
			pageNo = 1;
		}
		if((Object)dataSize == null){//当传入过来的dataSize为null时,先进行赋值操作
			dataSize = 1;
		}
		if(pageNo <= 0){
			pageNo = 1;
		}
//记录一下数据一共有多少条
		int totalitems = f.size();
		//实例化一个接受分页处理之后的数据
		List<F> afterList = new ArrayList<F>();
		/*
		 * 进行分页处理,采用for循环的方式来进行处理
		 * 
		 * 首先for循环中,i应该从哪里开始:i应该从 (当前是第几页 -1 乘以 条数) 开始
		 * 
		 * 然后for循环应该到哪里结束,也就是i应该小于:判断(开始的索引+显示条数)是不是大于总条数,如果大于就是总条数,如果小于就是(开始的索引+显示条数)
		 * 
		 * 然后让i++
		 */
for 
		( int i = (pageNo-1)*dataSize; 
		  i < (((pageNo -1)*dataSize) + dataSize > 
		  totalitems ? totalitems:((pageNo -1)*dataSize) +dataSize);
				i++) {
			//然后将数据存入afterList中
afterList.add(f.get(i));
		}
//然后将处理后的数据集合进行返回
		return afterList;
	}
List集合进行分页的更多相关文章
- PHP redis有序集合实现分页
		<?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //设置 redis 字符 ... 
- 针对list集合进行分页展示
		直接定义个工具类,代码如下: package com.jk51.modules.wechat.web.util; import java.util.Collections; import java.u ... 
- C# ,通用内存集合对象分页、筛选(lambda那点事)
		通常呢我们需要翻页的数据大多都是从数据库中取,翻页.筛选.排序啥的都是通过SQL语句由数据库帮我搞定,那么有些需求没有数据库呢?或者有些数据只存在于内存中不存到数据库呢?怎么实现内存里面的对象集合的通 ... 
- linq查询集合并分页展示数据
		private void Bind() { if (Request.QueryString["QuestionNo"] != null) { string QuestionNo = ... 
- linq给list集合数据分页
		var lastlist= newlist.Skip(pageindex * pagesize).Take(pagesize); 
- springboot集合pagehelper分页不生效的原因
		也可以 
- Lind.DDD.Paging分页模块介绍
		回到目录 分页组件网上有很多,MVC.Pager,JSPager等,通过实现方式大体分为前端分页和后端分页,前端分页是前台对list内存本地集合进行分页,缺点就是在大数据情况下,内存占用过高:后端分页 ... 
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
		在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ... 
- c# 调用分页(控制器端的)与时间的格式
		1.在操作的model中: 2.在控制器中: , command.PageSize);//将从数据库获取到的集合进行分页 var gridModel = new DataSourceResult { ... 
随机推荐
- sql语句 MySQL
			1.操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specifica ... 
- 第五讲_图像识别之图像检测Image Detection
			第五讲_图像识别之图像检测Image Detection 目录 物体检测 ILSVRC竞赛200类(每个图片多个标签):输出类别+Bounding Box(x,y,w,h) PASCAL VOC 20 ... 
- from: 关于RabbitMQ
			from: http://lynnkong.iteye.com/blog/1699684 1 什么是RabbitMQ? RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种, ... 
- Git以及github的使用方法(二)创建仓库,git add添加到“暂储区”,git commit添加到“本地仓库”
			什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ... 
- [LeetCode][Java] Unique Paths II
			题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ... 
- mysql (8.0 或以下)数据 卸载, 安装, 创建用户, 赋权
			卸载 安装 创建用户wmxl create user 'wmxl'@'202.115.253.71' identified by '你的密码' 如果是mysql8.0,再输入以下 ALTER USER ... 
- 【php】在Windows2003下配置Apache2.4与php5.4
			直接配置php一直使用如同<[php]本地开发环境的部署与helloworld>(点击打开链接)的一键傻瓜包,被批为极度不专业,关键是这些一键傻瓜包LAMP的版本号不好控制.port什么的 ... 
- Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法
			昨天晚上调试了一晚上,在LinearLayout上接收屏幕动作,可是出现了问题, 以下的代码是本人调的代码 </pre><pre name="code" clas ... 
- Mysql 存储过程使用游标
			-- 完整例子 CREATE PROCEDURE test BEGIN -- 定义参数 DECLARE _id INT; -- 定义游标 DECLARE no_more_products ... 
- EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理
			EasyPusher手机直播 实现功能 最近很多EasyDarwin爱好者提出了手机移动端直播的功能需求,尤其是如何做出像映客这样能够快速出画面播放的效果,经过一段时间的移动端和服务端的优化,Easy ... 
