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

 

最新文章

  1. 为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件
  2. Java 网络编程之 Socket
  3. 移动开发框架,Hammer.js&amp;nbsp;移动设备触摸手势js库
  4. scanf和scanfs的区别
  5. 打开office弹出steup error 的解决办法
  6. .NET中导入导出Excel总结
  7. Linux 下shell显示-bash-4.1$不显示用户名路径的解决方法
  8. 基于visual Studio2013解决C语言竞赛题之0702函数设计
  9. 使用ArcGIS API for Silverlight实现地形坡度在线分析
  10. kubernetes系列08—service资源详解
  11. CSS问题
  12. java中this的N种使用方法
  13. 实现左边div固定宽度,右边div自适应撑满剩下的宽度的布局方式:
  14. Java 分布式和集中式理解
  15. django特殊的标签和过滤器
  16. SLD Related Gateway Serivces Unavaliable
  17. Spring Cloud (6)config 客户端配置 与GitHub通信
  18. 简单实现Spring框架--注解版
  19. Delphi7如何实现让Tedit显示文字垂直居中(上下居中)
  20. 【LOJ】#6437. 「PKUSC2018」PKUSC

热门文章

  1. python 添加tab补全
  2. JAVA调用R
  3. jquery瀑布流的制作
  4. jQuery.ajax(url,[settings])
  5. Android开发aidl使用中linkToDeath和unlinkToDeath的使用
  6. MarkdownPad 2 常用快捷键
  7. Swift3 - String 字符串、Array 数组、Dictionary 字典的使用
  8. 最便捷的免费 SSL 证书解决方案(实测start SSL、Let&#39;s Encrypt、七牛免费SSL证书)
  9. 详解java定时任务
  10. 一步步学习 Spring Data 系列之JPA(二)