JAVA List集合转Page(分页对象) java 分页 PageModel 测试类TestPagerModel
http://www.blogjava.net/jzone/archive/2015/06/05/308842.html?opt=admin
/**
* @version 1.0
* @author: fwjia
*/
import
java.util.List;
public
class
PageModel<T> {
/***
* 当前页
*/
private
int
page =
1
;
/***
* 总页数
*/
public
int
totalPages =
0
;
/***
* 每页数据条数
*/
private
int
pageRecorders;
/***
* 总页数
*/
private
int
totalRows =
0
;
/***
* 每页的起始数
*/
private
int
pageStartRow =
0
;
/***
* 每页显示数据的终止数
*/
private
int
pageEndRow =
0
;
/***
* 是否有下一页
*/
private
boolean
hasNextPage =
false
;
/***
* 是否有前一页
*/
private
boolean
hasPreviousPage =
false
;
/***
* 数据集合
*/
private
List<T> list;
public
PageModel(List<T> list,
int
pageRecorders) {
// 通过对象集,记录总数划分
init(list, pageRecorders);
}
/** */
/**
* 初始化list,并告之该list每页的记录数
* @param list 数据几个
* @param pageRecorders 一页显示多少数据
*/
public
void
init(List<T> list,
int
pageRecorders) {
this
.pageRecorders = pageRecorders;
this
.list = list;
totalRows = list.size();
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<T> 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<T> objects =
null
;
if
(!list.isEmpty()) {
objects = list.subList(pageStartRow, pageEndRow);
}
//this.description();
return
objects;
}
public
List<T> 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;
}
}
测试类TestPagerModel
import java.util.ArrayList;
import java.util.List;
/**
* @version 1.0
* @author: fwjia
*/
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<String> pm = new PageModel(list, 5);
List<String> sublist = pm.getObjects(2);
for(int i = 0; i < sublist.size(); i++) {
System.out.println(sublist.get(i));
}
}
}
上面的在项目中使用了
在java中实现list分页
原创墨咖 最后发布于2019-06-29 17:12:54 阅读数 162 收藏
展开
ArrayList list = new ArrayList();
list.add("name");
list.add("age");
list.add(16);
list.add("name1");
list.add("age1");
list.add(161);
list.add("name2");
list.add("age2");
list.add(162);
System.out.println("分页参数:0,3--:"+list.subList(0,3));
System.out.println("分页参数:3,6--:"+list.subList(3,6));
System.out.println("分页参数:6,9--:"+list.subList(6,9));
————————————————
版权声明:本文为CSDN博主「墨咖」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37335810/article/details/94177407
/**
* java内存分页工具类
*/
public
class
JavaMemoryPageUtil {
/**
* 获取分页数据
* @param dataList 进行分页的数据集合
* @param pageNum 第几页
* @param pageSize 每页显示多少条
* @return
*/
@SuppressWarnings
({
"rawtypes"
,
"unchecked"
})
public
static
List getPageLimit(List dataList,
int
pageNum,
int
pageSize){
if
(CollectionUtils.isEmpty(dataList)){
return
dataList;
}
List resultList =
new
ArrayList();
// 所有dataList数据中的第几条
int
currIdx = pageNum >
1
? (pageNum -
1
) * pageSize :
0
;
for
(
int
i =
0
; i < pageSize && i < dataList.size() - currIdx; i++) {
resultList.add(dataList.get(currIdx + i));
}
return
resultList;
}
}
JAVA List集合转Page(分页对象) java 分页 PageModel 测试类TestPagerModel相关推荐
- JAVA List集合转Page(分页对象)
/*** @version 1.0* @author: fwjia*/ import java.util.List;public class PageModel<T> {/**** 当前页 ...
- Java中集合相关案例(泛型通配符、Collections工具类、TreeSet、TreeMap、HashMap、HashSet和集合嵌套案例)
集合 一.集合相关案例 1.泛型通配符案例 2.集合工具类(Collections工具类) 3.TreeSet和TreeMap案例 4.HashMap案例 5.HashSet案例 6.TreeSet案 ...
- java 只初始化一次_java – 仅对多个测试类执行一次初始化代码
我正在为我的代码编写单元测试用例.我和Junit一起使用PowerMockito.我编写了一个初始化代码,它将处理我的应用程序中的所有初始化内容.以下是我的代码结构的方式: Class Service ...
- java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...
1. 对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...
- java使用集合存储过程_详解java调用存储过程并封装成map
详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...
- java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象
在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容 public Abstr ...
- Java程序设计——集合框架
目录 一.概述 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set.其中,List的特点是元素有序.元素可重复.Set的特点是元素 ...
- 【Java】集合框架基础编程练习题
Q1:创建有三个属性(ID.Name.Balance)的银行账户,并可查余额 /*** 创建有三个属性(ID.Name.Balance)的银行账户,并可查余额,这是Account账户*/ public ...
- Java中的Set集合接口实现插入对象不重复的原理
当使用set集合时,是需要重写set相关类的hashCode和equals方法的. 在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 . 如 ...
最新文章
- 关于Simple Joule Theif Curcuit 电路的两个提问
- 3DSlicer25:Report an Error
- 第一个程序---汇编学习笔记
- Black Hat 2017黑帽大会:8款值得一看的黑客工具
- Jenkins发布MVC应用程序
- dll文件懒加载_一步步学习NHibernate(5)——多对一,一对多,懒加载(2)
- ubuntu 16.04安装opencv 2.4.9及其关于qt的问题
- 风格和个性!一组微质感图标设计灵感
- 数据操作类:增删改查
- 锁 公平 非公平_推荐引擎也需要公平!
- SCM供应链协同管理系统解决方案
- Android:Java集合面试题集锦
- 关于8.0出现Only fullscreen opaque activities can request orientation
- codelldb-x86_64-windows.vsix 下载
- php 输入经纬度查询位置,根据经纬度查询附近地点信息
- ajax异步提示对号,jQuery Ajax显示对号和错号用于验证输入验证码是否正确
- 深度信念网络_【文章推荐】应用于油中溶解气体分析的深度信念网络与典型神经网络对比研究...
- 常识——server-u显示无法访问网页
- 字节跳动 |go 后端开发工程师社招一二三四五面面经|2022
- AMTD:一种适应性移动目标防御方法
热门文章
- PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 C++
- P1537 弹珠 背包可行性dp
- Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理
- HDU - 6756 Finding a MEX-分块思想
- Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
- P4178 Tree
- [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)
- 周末狂欢赛3(跳格子,英雄联盟,排序问题)
- 不止代码:ybtoj-棋盘分割(二维区间dp)
- jzoj1281-旅行【dp】