Java分页需求
近期在实现项目接口时,经常需要分页功能。有时返回“String”,有时是“Object”格式的分页List。针对这种情况,本人用java实现对List分页。
第一版
package org.sun.java; import java.util.ArrayList;
import java.util.List; /**
*
* @author Administrator
* @date 2016年7月16日
*/
public class SubListOperation {
final static int COUNT = 18; public List<String> init(int size) {
List<String> lists = new ArrayList<String>();
for (int i = 0; i < size; i++) {
lists.add("t" + (i + 1));
}
return lists;
} /**
*
* @param pageNum
* @param pageSize
* @return 简单分页功能
*/
public List<String> subList(int pageNum, int pageSize) {
List<String> lists = init(COUNT);
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
return lists.subList(fromIndex, toIndex);
} public static void main(String[] args) {
System.out.println("-------- start --------");
new SubListOperation().output();
System.out.println("-------- finish --------");
} public void output(){
int pageNum=2;
int pageSize=5;
for(String s:subList(pageNum,pageSize)){
System.out.println(s);
}
} }
-------- start --------
t6
t7
t8
t9
t10
-------- finish --------
考虑到超出元素个数时异常的情况,做多一步判断。
第二版
/**
*
* @param pageNum
* @param pageSize
* @return 简单分页功能
*/
public List<String> subList(int pageNum, int pageSize) {
List<String> lists = init(COUNT);
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
int size = lists.size();
if(fromIndex>=size){
return new ArrayList<String>();
}
return lists.subList(fromIndex, Math.min(size,toIndex));
} 第三版
package org.sun.java; import java.util.ArrayList;
import java.util.List; /**
*
* @author Administrator
* @date 2016年7月16日
*/
public class SubListOperation {
final static int COUNT = 18; public List<String> init(int size) {
List<String> lists = new ArrayList<String>();
for (int i = 0; i < size; i++) {
lists.add("t" + (i + 1));
}
return lists;
} /**
*
* @param size
* @return 初始化用户列表
*/
public List<User> initUser(int size) {
List<User> lists = new ArrayList<User>();
for (int i = 0; i < size; i++) {
lists.add(new User((i + 1), "user" + (i + 1)));
}
return lists;
} /**
*
* @param pageNum
* @param pageSize
* @return 简单分页功能
*/
public List<User> userSubList(int pageNum, int pageSize) {
List<User> lists = initUser(COUNT);
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
int size = lists.size();
if (fromIndex >= size) {
return new ArrayList<User>();
}
return lists.subList(fromIndex, Math.min(size, toIndex));
} public List<String> subList(int pageNum, int pageSize) {
List<String> lists = init(COUNT);
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
int size = lists.size();
if (fromIndex >= size) {
return new ArrayList<String>();
}
return lists.subList(fromIndex, Math.min(size, toIndex));
}
static class User {
int id;
String name; public User(int id, String name) {
super();
this.id = id;
this.name = name;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
} } public static void main(String[] args) {
System.out.println("-------- start --------");
// new SubListOperation().outputString();
new SubListOperation().outputObject();
System.out.println("-------- finish --------");
} public void outputString() {
int pageNum = 2;
int pageSize = 5;
for (String s : subList(pageNum, pageSize)) {
System.out.println(s);
}
} public void outputObject() {
int pageNum = 2;
int pageSize = 5;
for (User s : userSubList(pageNum, pageSize)) {
System.out.println(s);
}
} }
-------- start --------
User [id=6, name=user6]
User [id=7, name=user7]
User [id=8, name=user8]
User [id=9, name=user9]
User [id=10, name=user10]
-------- finish --------
泛型方法,通用类型实现分页
package org.sun.java; import java.util.ArrayList;
import java.util.List; /**
*
* @author Administrator
* @date 2016年7月16日
*/
public class SubListOperation {
final static int COUNT = 18; public List<String> init(int size) {
List<String> lists = new ArrayList<String>();
for (int i = 0; i < size; i++) {
lists.add("t" + (i + 1));
}
return lists;
} /**
*
* @param size
* @return 初始化用户列表
*/
public List<User> initUser(int size) {
List<User> lists = new ArrayList<User>();
for (int i = 0; i < size; i++) {
lists.add(new User((i + 1), "user" + (i + 1)));
}
return lists;
} /**
*
* @param lists 将被分页展示的列表
* @param pageNum 页码数
* @param pageSize 每页条数大小
* @return
*/
public <T> List<T> generalPagenation(List<T> lists,int pageNum, int pageSize) {
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
int size = lists.size();
if (fromIndex >= size) {
return new ArrayList<T>();
}
return lists.subList(fromIndex, Math.min(size, toIndex));
} static class User {
int id;
String name; public User(int id, String name) {
super();
this.id = id;
this.name = name;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
} } public static void main(String[] args) {
System.out.println("-------- start --------");
new SubListOperation().outputT();
System.out.println("-------- finish --------");
} public void outputT() {
int pageNum = 3;
int pageSize = 5;
for (Object s : generalPagenation(init(18),pageNum, pageSize)) {
System.out.println(s);
}
System.out.println("---------***---------");
for (Object s : generalPagenation(initUser(12),pageNum, pageSize)) {
System.out.println(s);
}
} }
-------- start --------
t11
t12
t13
t14
t15
---------***---------
User [id=11, name=user11]
User [id=12, name=user12]
-------- finish --------
Java分页需求的更多相关文章
- MongoDB分页的Java实现和分页需求的思考
前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路. 传统分页思路 假设一页大小为10条.则 //page 1 1-10 //pa ...
- 数据你把它的金额-JAVA分页
数据量你造吗-JAVA分页 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...
- java 分页对象以及数据库分页查询
import java.util.List; public class Pager<T> { private Integer pageSize; private Integer total ...
- 浅谈Java分页技术
话不多言.我们要实现java分页技术,我们首先就需要定义四个变量,他们是: int pageSize;//每页显示多少条记录 int pageNow;//希望现实第几页 int pageCount; ...
- 一个方便的java分页算法
一个好用的java分页算法,代码如下,只需要分页参数继承Pageable类就可以很方便分页了 package cn.com.base.common.pagination; /** * 分页基类 * * ...
- [Java] 一种好的JAVA分页实现
喃都不说了,贴代码,意思都在代码里面了 Page.java //分页类.定义分页字段信息,供前台页面使用 package com.core.common; import java.util.List; ...
- 【Bootstrap】Bootstrap和Java分页-第二篇
目录 关于此文 配置xml-pager.tld 分页控件-Pager 分页action集成类-BaseController 实例-Dao 实例-service 实例-action 实例-JSP 实例- ...
- 数据量你造吗-JAVA分页
原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks 学习的心态第一,解行要相应.其实<弟子规>在“余力 ...
- Java分页下载
需求.提供公共的可以按照一定条件查询出结果,并提供将查询结果全部下载功能(Excel.CSV.TXT),由于一次性查出结果放到内存会占用大量内存.需要支持分页模式查询出所有数据. 实现思路 1.在公共 ...
随机推荐
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- java反射复制属性值
/** 将sourceObj的属性拷贝到targetObj * @param sourceObj * @param targetObj * @param clazz 从哪一个类开始(比如sourceO ...
- 基于SOA分布式架构的dubbo框架基础学习篇
以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...
- 9.2.1 .net framework下的MVC 控件的封装(上)
在写.net core下mvc控件的编写之前,我先说一下.net framework下我们MVC控件的做法. MVC下控件的写法,主要有如下三种,最后一种是泛型的写法,mvc提供的控件都是基本控件. ...
- IoC组件~Autofac将多实现一次注入,根据别名Resove实例
回到目录 对于IoC容器来说,性能最好的莫过于Autofac了,而对于灵活度来说,它也是值得称赞的,为了考虑系统的性能,我们经常是在系统初始化于将所有依赖注册到容器里,当需要于根据别名把实现拿出来,然 ...
- ASP.Net MVC数据传递
今天做了个项目,涉及到离线下载HTML,没有前后台交互,没有Ajax,JavaScript,只有第一次从控制器带参数进入,一次读取到页面所需要的全部数据,使用Razor语法绑定到前台页面,在做这个项目 ...
- HTML+CSS项目开发总结
好几天没更新博客了,刚实战完一个HTML+CSS的简单项目.经过几天的摸索,发现收益良多.之前只是单纯得写demo,看知识点,没有亲自实战项目.但实战过后才会了解,如何才能更好地提升自己的技术.针对这 ...
- Web Mercator Non-Conformal, Non-Mercator
public static void XYtoGL(Coordinate coordinate) { double R = 6378137; coordinate.x = coordinate.x / ...
- ASP.NET MVC 5 03 - 安装MVC5并创建第一个应用程序
不知不觉 又逢年底, 穷的钞票 所剩无几. 朋友圈里 各种装逼, 抹抹眼泪 MVC 继续走起.. 本系列纯属学习笔记,如果哪里有错误或遗漏的地方,希望大家高调指出,当然,我肯定不会低调改正的.(开个小 ...
- SQL Server 2012 新特性:新增和修改函数
转换函数 1.PARSE Parse是把字符串类型转化为想要的类型,看看和convert和cast的区别 SELECT PARSE ('2.111111' AS f ...