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(十)___iptables防火墙
一.防火墙的作用 三.防火墙的分类 三.iptables基本语法: 表: 常用filter,nat用于地址映射转换. 配置文件: /etc/sysconfig/iptables 过滤表信息 . 查看i ...
- Threejs中的材质贴图
最近项目需要折腾three.js,有关three.js几点说明 1.作用 threejs适合创建简单的模型视图 2.对于复杂的模型图(如:室内模型图)需要美术3D制作,前端导成特定格式文件(如*.mt ...
- 使用 Vue 2.0 实现服务端渲染的 HackerNews
Vue 2.0 支持服务端渲染 (SSR),并且是流式的,可以做组件级的缓存,这使得极速渲染成为可能.同时, 和 2.0 也都能够配合 SSR 提供同构路由和客户端 state hydration.v ...
- 基于Nuclear的Web组件-Todo的十一种写法
刀耕火种 刀耕火种是新石器时代残留的农业经营方式.又称迁移农业,为原始生荒耕作制. var TodoApp = Nuclear.create({ add: function (evt) { evt.p ...
- Tomcat中的Session小结
什么是Session 对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap: Session的目的 Http协议是一种无状态协议,即每次服务端 ...
- 原创 C++应用程序在Windows下的编译、链接:第一部分 概述
本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...
- android onNewIntent调用时机
(转自:http://www.cnblogs.com/zenfly/archive/2012/02/10/2345196.html) 在IntentActivity中重写下列方法:onCreate o ...
- NRF24L01 无线模块的使用
NRF24L01 是一款工作在2.4-2.5GHz通用ISM频段的单片收发芯片 工作电压:1.9-3.6V低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象 多频点 ...
- 《Note --- Unreal 4 --- matinee》
https://docs.unrealengine.com/latest/CHN/Engine/Matinee/index.html https://docs.unrealengine.com/lat ...
- Spark机器学习· 实时机器学习
Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...