java分页之假分页实现简单的分页器
importjava.util.Arrays; importjava.util.Collections; importjava.util.List; /** *@authorshuang.gaoDate:2016/1/28Time:12:26 */ publicclassPager<T>{ /** *每页显示条数 */ privateintpageSize; /** *原集合 */ privateList<T>data; privatePager(List<T>data,intpageSize){ if(data==null||data.isEmpty()){ thrownewIllegalArgumentException("datamustbenotempty!"); } this.data=data; this.pageSize=pageSize; } /** *创建分页器 * *@paramdata需要分页的数据 *@parampageSize每页显示条数 *@param<T>业务对象 *@return分页器 */ publicstatic<T>Pager<T>create(List<T>data,intpageSize){ returnnewPager<>(data,pageSize); } /** *得到分页后的数据 * *@parampageNum页码 *@return分页后结果 */ publicList<T>getPagedList(intpageNum){ intfromIndex=(pageNum-1)*pageSize; if(fromIndex>=data.size()){ returnCollections.emptyList(); } inttoIndex=pageNum*pageSize; if(toIndex>=data.size()){ toIndex=data.size(); } returndata.subList(fromIndex,toIndex); } publicintgetPageSize(){ returnpageSize; } publicList<T>getData(){ returndata; } publicstaticvoidmain(String[]args){ Integer[]array={1,2,3,4,5,6,7,8,9,10,11,12}; List<Integer>list=Arrays.asList(array); Pager<Integer>pager=Pager.create(list,10); List<Integer>page1=pager.getPagedList(1); System.out.println(page1); List<Integer>page2=pager.getPagedList(2); System.out.println(page2); List<Integer>page3=pager.getPagedList(3); System.out.println(page3); } }
假分页,顾名思义,不是真正的在数据库里进行过滤,而是从数据库查询之后,取得全部结果,在展现的时候做些手脚。
importjava.util.Arrays;
importjava.util.Collections;
importjava.util.List;
/**
*@authorshuang.gao Date:2016/1/28Time:12:26
*/
publicclassPager<T>{
/**
*每页显示条数
*/
privateintpageSize;
/**
*原集合
*/
privateList<T>data;
privatePager(List<T>data,intpageSize){
if(data==null||data.isEmpty()){
thrownewIllegalArgumentException("datamustbenotempty!");
}
this.data=data;
this.pageSize=pageSize;
}
/**
*创建分页器
*
*@paramdata需要分页的数据
*@parampageSize每页显示条数
*@param<T>业务对象
*@return分页器
*/
publicstatic<T>Pager<T>create(List<T>data,intpageSize){
returnnewPager<>(data,pageSize);
}
/**
*得到分页后的数据
*
*@parampageNum页码
*@return分页后结果
*/
publicList<T>getPagedList(intpageNum){
intfromIndex=(pageNum-1)*pageSize;
if(fromIndex>=data.size()){
returnCollections.emptyList();
}
inttoIndex=pageNum*pageSize;
if(toIndex>=data.size()){
toIndex=data.size();
}
returndata.subList(fromIndex,toIndex);
}
publicintgetPageSize(){
returnpageSize;
}
publicList<T>getData(){
returndata;
}
publicstaticvoidmain(String[]args){
Integer[]array={1,2,3,4,5,6,7,8,9,10,11,12};
List<Integer>list=Arrays.asList(array);
Pager<Integer>pager=Pager.create(list,10);
List<Integer>page1=pager.getPagedList(1);
System.out.println(page1);
List<Integer>page2=pager.getPagedList(2);
System.out.println(page2);
List<Integer>page3=pager.getPagedList(3);
System.out.println(page3);
}
}
这是一个简单的分页器,原理很简单,将从数据库查询的数据,传入到分页器里,返回的是分好页的集合。
优点是兼容所有JDBC数据库,缺点是这种方法不适用于大批量数据。
以上就是本文的全部内容,希望对大家的学习有所帮助。