近期在实现项目接口时,经常需要分页功能。有时返回“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分页需求的更多相关文章

  1. MongoDB分页的Java实现和分页需求的思考

    前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路. 传统分页思路 假设一页大小为10条.则 //page 1 1-10 //pa ...

  2. 数据你把它的金额-JAVA分页

    数据量你造吗-JAVA分页 原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...

  3. java 分页对象以及数据库分页查询

    import java.util.List; public class Pager<T> { private Integer pageSize; private Integer total ...

  4. 浅谈Java分页技术

    话不多言.我们要实现java分页技术,我们首先就需要定义四个变量,他们是: int  pageSize;//每页显示多少条记录 int pageNow;//希望现实第几页 int pageCount; ...

  5. 一个方便的java分页算法

    一个好用的java分页算法,代码如下,只需要分页参数继承Pageable类就可以很方便分页了 package cn.com.base.common.pagination; /** * 分页基类 * * ...

  6. [Java] 一种好的JAVA分页实现

    喃都不说了,贴代码,意思都在代码里面了 Page.java //分页类.定义分页字段信息,供前台页面使用 package com.core.common; import java.util.List; ...

  7. 【Bootstrap】Bootstrap和Java分页-第二篇

    目录 关于此文 配置xml-pager.tld 分页控件-Pager 分页action集成类-BaseController 实例-Dao 实例-service 实例-action 实例-JSP 实例- ...

  8. 数据量你造吗-JAVA分页

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks 学习的心态第一,解行要相应.其实<弟子规>在“余力 ...

  9. Java分页下载

    需求.提供公共的可以按照一定条件查询出结果,并提供将查询结果全部下载功能(Excel.CSV.TXT),由于一次性查出结果放到内存会占用大量内存.需要支持分页模式查询出所有数据. 实现思路 1.在公共 ...

随机推荐

  1. python 添加tab补全

    在平时查看Python方法用到tab补全还是很方便的. 1. mac 平台 配置如下: mac是类Unix平台,需要在添加一条配置内容到bash_profile 中(默认是没有这个文件,可以新建一个放 ...

  2. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  3. Mac入门(三)使用brew安装软件

    brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew类似ubuntu系统下的apt-get的功能 阅读目录 ...

  4. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  5. Java输入输出常用类Scanner

    Scaner类,使用获取键盘输入. public boolean DemoTest(){ Scanner input = new Scanner(System.in); System.out.prin ...

  6. hideSoftInputFromWindow

    有的时候会碰到软键盘不好关闭,然后就去调界面代码,发现不行,说到底还是对软键盘不熟悉的原因,软键盘windowSoftInputMode有很多种 如果你默认的activity的模式为默认的,或者sta ...

  7. 如何利用mount命令将另外一个linux服务器上的目录挂在到本机?

    你先要在192.168.1.100上开启NFS服务并编辑/etc/exports文件: chkconfig --level 35 nfs on service nfs start vi /etc/ex ...

  8. python from __future__ import division

    1.在python2 中导入未来的支持的语言特征中division(精确除法),即from __future__ import division ,当我们在程序中没有导入该特征时,"/&qu ...

  9. 运维之网络安全抓包—— WireShark 和 tcpdump

    ------------------------------------------------本文章只解释抓包工具的捕获器和过滤器的说明,以及简单使用,应付日常而已----------------- ...

  10. Js IP转数字

    <script type="text/javascript"> function d2h(d) { return d.toString(16) } function h ...