无线&移动互联网技术研发
换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
java List 分页应用(一)
Posted on 2010-01-09 14:35
Gavin.lee
阅读(5100)
评论(1)
编辑
收藏
所属分类:
java SE & EE
应用类:
package
com.Gavin.tools.util;
/** */
/**
* List分页
* 实现:利用List的获取子List方法,实现对List的分页
*
@author
显武
* @date 2010-1-8 16:27:31
*
*/
import
java.util.ArrayList;
import
java.util.List;
public
class
PageModel
{
private
int
page
=
1
;
//
当前页
public
int
totalPages
=
0
;
//
总页数
private
int
pageRecorders;
//
每页5条数据
private
int
totalRows
=
0
;
//
总数据数
private
int
pageStartRow
=
0
;
//
每页的起始数
private
int
pageEndRow
=
0
;
//
每页显示数据的终止数
private
boolean
hasNextPage
=
false
;
//
是否有下一页
private
boolean
hasPreviousPage
=
false
;
//
是否有前一页
private
List list;
//
private Iterator it;
public
PageModel(List list,
int
pageRecorders)
{
init(list, pageRecorders);
//
通过对象集,记录总数划分
}
/** */
/**
* 初始化list,并告之该list每页的记录数
*
@param
list
*
@param
pageRecorders
*/
public
void
init(List list,
int
pageRecorders)
{
this
.pageRecorders
=
pageRecorders;
this
.list
=
list;
totalRows
=
list.size();
//
it = list.iterator();
hasPreviousPage
=
false
;
if
((totalRows
%
pageRecorders)
==
0
)
{
totalPages
=
totalRows
/
pageRecorders;
}
else
{
totalPages
=
totalRows
/
pageRecorders
+
1
;
}
if
(page
>=
totalPages)
{
hasNextPage
=
false
;
}
else
{
hasNextPage
=
true
;
}
if
(totalRows
<
pageRecorders)
{
this
.pageStartRow
=
0
;
this
.pageEndRow
=
totalRows;
}
else
{
this
.pageStartRow
=
0
;
this
.pageEndRow
=
pageRecorders;
}
}
//
判断要不要分页
public
boolean
isNext()
{
return
list.size()
>
5
;
}
public
void
setHasPreviousPage(
boolean
hasPreviousPage)
{
this
.hasPreviousPage
=
hasPreviousPage;
}
public
String toString(
int
temp)
{
String str
=
Integer.toString(temp);
return
str;
}
public
void
description()
{
String description
=
"
共有数据数:
"
+
this
.getTotalRows()
+
"
共有页数:
"
+
this
.getTotalPages()
+
"
当前页数为:
"
+
this
.getPage()
+
"
是否有前一页:
"
+
this
.isHasPreviousPage()
+
"
是否有下一页:
"
+
this
.isHasNextPage()
+
"
开始行数:
"
+
this
.getPageStartRow()
+
"
终止行数:
"
+
this
.getPageEndRow();
System.out.println(description);
}
public
List getNextPage()
{
page
=
page
+
1
;
disposePage();
System.out.println(
"
用户凋用的是第
"
+
page
+
"
页
"
);
this
.description();
return
getObjects(page);
}
/** */
/**
* 处理分页
*/
private
void
disposePage()
{
if
(page
==
0
)
{
page
=
1
;
}
if
((page
-
1
)
>
0
)
{
hasPreviousPage
=
true
;
}
else
{
hasPreviousPage
=
false
;
}
if
(page
>=
totalPages)
{
hasNextPage
=
false
;
}
else
{
hasNextPage
=
true
;
}
}
public
List getPreviousPage()
{
page
=
page
-
1
;
if
((page
-
1
)
>
0
)
{
hasPreviousPage
=
true
;
}
else
{
hasPreviousPage
=
false
;
}
if
(page
>=
totalPages)
{
hasNextPage
=
false
;
}
else
{
hasNextPage
=
true
;
}
this
.description();
return
getObjects(page);
}
/** */
/**
* 获取第几页的内容
*
*
@param
page
*
@return
*/
public
List getObjects(
int
page)
{
if
(page
==
0
)
this
.setPage(
1
);
else
this
.setPage(page);
this
.disposePage();
if
(page
*
pageRecorders
<
totalRows)
{
//
判断是否为最后一页
pageEndRow
=
page
*
pageRecorders;
pageStartRow
=
pageEndRow
-
pageRecorders;
}
else
{
pageEndRow
=
totalRows;
pageStartRow
=
pageRecorders
*
(totalPages
-
1
);
}
List objects
=
null
;
if
(
!
list.isEmpty())
{
objects
=
list.subList(pageStartRow, pageEndRow);
}
//
this.description();
return
objects;
}
public
List getFistPage()
{
if
(
this
.isNext())
{
return
list.subList(
0
, pageRecorders);
}
else
{
return
list;
}
}
public
boolean
isHasNextPage()
{
return
hasNextPage;
}
public
void
setHasNextPage(
boolean
hasNextPage)
{
this
.hasNextPage
=
hasNextPage;
}
public
List getList()
{
return
list;
}
public
void
setList(List list)
{
this
.list
=
list;
}
public
int
getPage()
{
return
page;
}
public
void
setPage(
int
page)
{
this
.page
=
page;
}
public
int
getPageEndRow()
{
return
pageEndRow;
}
public
void
setPageEndRow(
int
pageEndRow)
{
this
.pageEndRow
=
pageEndRow;
}
public
int
getPageRecorders()
{
return
pageRecorders;
}
public
void
setPageRecorders(
int
pageRecorders)
{
this
.pageRecorders
=
pageRecorders;
}
public
int
getPageStartRow()
{
return
pageStartRow;
}
public
void
setPageStartRow(
int
pageStartRow)
{
this
.pageStartRow
=
pageStartRow;
}
public
int
getTotalPages()
{
return
totalPages;
}
public
void
setTotalPages(
int
totalPages)
{
this
.totalPages
=
totalPages;
}
public
int
getTotalRows()
{
return
totalRows;
}
public
void
setTotalRows(
int
totalRows)
{
this
.totalRows
=
totalRows;
}
public
boolean
isHasPreviousPage()
{
return
hasPreviousPage;
}
}
测试类:
package
com.Gavin.tools.util;
import
java.util.ArrayList;
import
java.util.List;
public
class
TestPagerModel
{
public
static
void
main(String args[])
{
List
<
String
>
list
=
new
ArrayList
<
String
>
();
list.add(
"
a
"
);
list.add(
"
b
"
);
list.add(
"
c
"
);
list.add(
"
d
"
);
list.add(
"
e
"
);
list.add(
"
f
"
);
list.add(
"
g
"
);
list.add(
"
h
"
);
list.add(
"
h
"
);
list.add(
"
i
"
);
list.add(
"
j
"
);
list.add(
"
k
"
);
list.add(
"
l
"
);
list.add(
"
m
"
);
PageModel pm
=
new
PageModel(list,
5
);
List sublist
=
pm.getObjects(
3
);
for
(
int
i
=
0
; i
<
sublist.size(); i
++
)
{
System.out.println(sublist.get(i));
}
System.out.println(sublist.get(
0
));
}
}
评论
#
re: java List 分页应用(一)
回复
更多评论
2014-10-17 16:27 by
ss
ss
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
commons-lang-2.4.jar 包常用方法集锦
String&InputStream的相互转化
java 堆与栈的详细介绍
HttpClient 一文通 (摘)
java List 分页应用(二)
java List 分页应用(一)
java 有效的防止SQL注入
java clone
Java 序列化与反序列化
Junit 单元测试
Powered by:
BlogJava
Copyright © Gavin.lee
日历
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(13)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
随笔档案
(19)
2011年6月 (1)
2011年5月 (1)
2010年12月 (1)
2010年5月 (1)
2010年1月 (1)
2009年8月 (2)
2009年6月 (6)
2009年5月 (6)
文章分类
(277)
Date tools(4)
FreeMarker (7)
java design pattern(3)
java SE & EE(60)
JDBC(14)
jsp 【勿忘】(5)
Linux command(7)
Linux shell 入门(11)
Linux 日常应用(5)
Log && File Operate(8)
MemCache (5)
SiteMesh 页面装饰组件(2)
SSH2 --Hibernate(6)
SSH2 --Spring(9)
SSH2 --Struts2(21)
Subversion(Svn)(5)
wap 积累(8)
web 积累(前端 + 后台)(33)
xml doc 操作(12)
多线程(6)
性能分析(7)
类的设计(4)
经典语录(3)
经验&常识(32)
文章档案
(282)
2011年7月 (1)
2011年6月 (1)
2011年5月 (1)
2011年4月 (1)
2011年3月 (1)
2011年2月 (1)
2010年12月 (6)
2010年11月 (8)
2010年10月 (1)
2010年9月 (6)
2010年6月 (7)
2010年5月 (22)
2010年4月 (1)
2010年3月 (14)
2010年2月 (2)
2010年1月 (10)
2009年12月 (32)
2009年11月 (30)
2009年10月 (2)
2009年9月 (5)
2009年8月 (13)
2009年7月 (41)
2009年6月 (43)
2009年5月 (33)
收藏夹
(7)
java 基础类(1)
JSP(1)
server(2)
WEB(1)
数据库
设计模式(2)
友情链接
blogjava中的强人
chinaunix 社区
java 世纪网
java 基础辅导文章
javaeye 蓝色的风
SQL语句教程
与java共舞
中国协议分析网
中文java技术网
多线程
待看的文章
感兴趣的 csdn
我的漫漫程序之旅
新起点,新开始
梦幻之旅
赵学庆 的博客
超级多文章的牛人
隔叶黄莺 The Blog of Unmi
高手论坛
最新随笔
1. Mysql:1292 truncated incorrect double value -- concat 函数用法
2. Mysql 插入当前时间【摘】
3. 学计算机的你伤不起啊【雷人】
4. ucweb和opera工作原理的差别【摘】
5. 清朝皇帝列表
6. 设置IE查看源文件时默认打开的编辑器【转】
7. subclipse svn修改用户名密码问题【摘】
8. hibernate.dialect (Hibernate SQL方言)-备用
9. Tomcat JspFactory的异常的原因及解决办法
10. 关于MyEclipse中的Tomcat启动的问题 【Tomcat JDK name error】
11. win-xp 自动关机脚本 【古老的记忆】
12. Office 2007 Word 打开故障 - "The setup controller has encountered a problem during instll"
13. 木匠家的门
14. MyEclipse 后台进程一直运行"computing additional info"的解决办法
15. MyEclipse 一直 initializing java tooling······
16. MyEclipse 代码提示(“@”自动提示)
17. org.hibernate.hql.ast.QuerySyntaxException(我的流水账)
18. org.hibernate.hql.antlr.HqlBaseParser.recover(NoSuchMethodError)
19. SVN:cannot map the project with svn provider解决办法
20. WAP1.0 前端开发经验(原创-JSP)
21. Notepad++提示"Load langs.xml failed!"的解决方法
22. 让你的PC也能访问手机腾讯网
23. 【转】Proxool 连接池的配置-hibernate篇
24. Hibernate 主键生成策略
25. Quartz cron 表达式格式的含义
26. OGNL功用!!!
27. 使用Appfuse快速构建J2EE应用
28. 大型门户网站的十四大技术!!!
29. Urlrewrite与Struts2.x结合使用
30. HttpWatch的检测指示说明:Blocked、Connect、Send、Wait、Receive
31. 解读JAR,SIS,SISX格式区别!!!
32. commons-lang-2.4.jar 包常用方法集锦
33. Struts2中解决一个表单多种提交
34. JSTL(Java Standard Tag Library) 标记库的使用
35. Struts2验证错误信息的两个经典方法-addFieldError&addActionError
36. Hibernate常见异常-无法转换为内部表示
37. Spring AOP详细导读-用多手段实例对比呈现AOP
38. Struts2 Result-type(封装Action层到View层的跳转逻辑)
39. 在Struts2中以IOC和非IOC方式获取session&request
40. 采用url链接形式提交action(非s:from方式提交)
搜索
积分与排名
积分 - 353601
排名 - 156
最新评论
1. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError
S2C4
--asdad
2. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError[未登录]
asd
--as
3. 21232.2323
323432432
--冯海波
4. re: SVN:cannot map the project with svn provider解决办法[未登录]
多谢!已经解决。
--will
5. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError
44
--2
阅读排行榜
1. 学计算机的你伤不起啊【雷人】(1010)
2. 看看这个笑话,你就知道干IT的不容易了!!(619)
3. 清朝皇帝列表(609)
4. 每天读一遍,不久你就会变! ---- 很好很强大(466)
5. 木匠家的门(416)
评论排行榜
1. 学计算机的你伤不起啊【雷人】(0)
2. 清朝皇帝列表(0)
3. 木匠家的门(0)
4. 每天读一遍,不久你就会变! ---- 很好很强大(0)
5. 我喜欢的语录(0)