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 { ...
随机推荐
- GRPC协议的相关原理
GRPC的Client与Server,均通过Netty Channel作为数据通信,序列化.反序列化则使用Protobuf,每个请求都将被封装成HTTP2的Stream,在整个生命周期中,客户端Cha ...
- JDK1.8日期时间库学习
这周在阅读<阿里巴巴Java开发手册>时,在并发处理一节的日期处理中,其强调SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果 定义为 stati ...
- Maven修改默认本地资源库文件夹
默认的Maven地址如下: Linux/Mac:~/.m2(提示:~/为当前用户目录地址) Widnows:C:\Users\{username}\.m2(提示:username为当前用户名) 修改操 ...
- FastDFS 使用经验分享
原文:http://www.ttlsa.com/fastdfs/fastdfs-experience-sharing/ 应用背景 文件被上传到FastDFS后Storage服务端将返回的文件索引(FI ...
- cocos2d-x step by step(2) 鼠标事件,键盘事件,等等事件
各种小控件加载进去了,那么问题来了,这些东西如何接受事件呢? good job,let us find the answer 首先我们去看文档,官方尼玛有好多文档,而且大,全,详细,感觉还是不错的 h ...
- [反汇编练习] 160个CrackMe之035
[反汇编练习] 160个CrackMe之035. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- 怎样使用Entityframework.Extended
这个插件真的非常有用,我们能够使用下面语法来简化我们的工作,下面不过演示样例: Deleting <strong>//delete all users where FirstName ma ...
- java要在命令行执行eclipse的项目的方法
在命令行运行eclipse的项目时须要把该项目生成一个能够运行的jar包,才干够在命令行下运行:分为两种情况,一种是项目中没有调用第三方的jar包,这样的比較简单.网上的资源也非常多,本文主要讲述第二 ...
- poj 1651 Multiplication Puzzle【区间DP】
题目链接:http://poj.org/problem? id=1651 题意:初使ans=0,每次消去一个值,位置在pos(pos!=1 && pos !=n) 同一时候ans+=a ...
- 传统的Java虚拟机和Android的Dalvik虚拟机及其ART模式
Java虚拟机的解释执行引擎称为“基于栈的执行引擎”,其中所指的“栈”就是操作数栈.因此我们也称Java虚拟机是基于栈的,这点不同于Android虚拟机,Android虚拟机是基于寄存器的. 基于栈的 ...