利用List的subList方法,实现对List分页
2015-02-16 17:55
561 查看
/** *//** * 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)); } }
相关文章推荐
- java中利用List的subList方法实现对List分页(简单易学)
- 利用 LINQ的skip和Take 方法对List实现分页效果
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- 利用Flask-SQLAlchemy提供的paginate()方法实现博客文章的分页显示
- Java下List使用subList实现分页获取
- 利用DataSet的Fill方法实现DataList的分页技术(vb.net)
- java中list数据拆分为sublist实现分页的简单代码
- 利用 Google Guava 提供的便捷方法对 List 进行内存分页
- java中list数据拆分为sublist实现分页的简单代码
- java.util.List接口的方法subList()进行分页
- 使用java.util.List的subList方法进行分页
- 利用java8 stream api 实现List集合分页获取工具
- asp.net利用后台实现直接生成html分页的方法
- java.util.List接口的方法subList()进行分页
- EF 利用PagedList进行分页并结合查询 方法2
- asp.net利用后台实现直接生成html分页的方法
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- 利用vue + element实现表格分页和前端搜索的方法
- 在ASP.Net中两种利用CSS实现多界面的方法. (转)
- SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作