写的一个分页工具类,如果有问题的话,请指正,谢谢
import java.util.ArrayList;import java.util.List;/** * 分页工具类 * * @author user * */public class Pager { private static final int DEFAULT_PAGESIZE = 10;// 默认分页的每页显示的条数 private static final int DEFAULT_PAGENUM = 5;// 默显示页码的数量 private int pagerIndex;// 当前的页码 private int pagerCount;// 总页码 private int pageSize;// 每页显示的条数 private int recordCount;// 总记录数 private int offsetNum;// 显示页码数量的偏移量 private int pageNum;// 显示页码的数量 public Pager() { } /** * 构造函数,初始化分页的信息,自动修正 * * @param pageIndex * 当前的页码 * @param recordCount * 总记录数 * @param pageSize * 分页每页显示的条数 */ public Pager(int pageIndex, int recordCount, int pageSize) { this.pagerIndex = pageIndex; this.recordCount = recordCount; this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize; this.pagerCount = (this.recordCount - 1) / pageSize + 1; if (this.pagerIndex < 1) this.pagerIndex = 1; if (this.pagerIndex > pagerCount) this.pagerIndex = this.pagerCount; this.setPageNum(Pager.DEFAULT_PAGENUM); } /** * 构造函数,初始化分页的信息,自动修正 * * @param pageIndex * 当前的页码 * @param recordCount * 总记录数 * @param pageSize * 分页每页显示的条数 * @param pagerNum * 每页显示的条数 */ public Pager(int pageIndex, int recordCount, int pageSize, int pagerNum) { this(pageIndex, recordCount, pageSize); this.setPageNum(pagerNum); } /** * 设置分页的信息,自动修正 * * @param pageIndex * 当前的页码 * @param recordCount * 总记录数 * @param pageSize * 分页每页显示的条数 */ public void setPagerInfo(int pageIndex, int recordCount, int pageSize) { this.pagerIndex = pageIndex; this.recordCount = recordCount; this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize; this.pagerCount = (this.recordCount - 1) / pageSize + 1; if (this.pagerIndex < 1) this.pagerIndex = 1; if (this.pagerIndex > pagerCount) this.pagerIndex = this.pagerCount; } /** * 得到上一页 * * @return */ public int getProvPageIndex() { return (this.pagerIndex - 1) < 1 ? 1 : this.pagerIndex - 1; } /** * 得到下一页 * * @return */ public int getNextPageIndex() { return (this.pagerIndex + 1) > this.pagerCount ? pagerCount : this.pagerIndex + 1; } public int getPagerIndex() { return pagerIndex; } public int getPagerCount() { return pagerCount; } public int getPageSize() { return pageSize; } public int getRecordCount() { return recordCount; } /** * 设置显示页码的数量 * * @param pageNum * 显示页码的数量 */ private void setPageNum(int pageNum) { pageNum = pageNum % 2 == 0 ? ++pageNum : pageNum;// 页数目录的数量只能为奇数 pageNum = pageNum < 1 ? Pager.DEFAULT_PAGENUM : pageNum;// 如果显示的页码数量小于1,则设置为默认值 pageNum = pageNum > this.pagerCount ? (this.pagerCount % 2 ==0&&this.pagerCount>2 ? this.pagerCount - 1 : this.pagerCount) : pageNum;// 如果显示页码的数量大于总页数,则邓等于页码德总页数 this.offsetNum = (pageNum - 1) / 2; this.pageNum = pageNum; } /** * 分页目录显示样式 * * @return */ public ListgetShowPageStyle() { List list = new ArrayList (); // 当分页的总数量小于等于显示分页的数量 if (this.pagerCount <= this.pageNum) { for (int i = 1; i <= this.pagerCount; i++) { list.add(i); } return list; } // 显示分页数量的偏移量大于当前的页码 if (this.offsetNum >= this.pagerIndex) { for (int i = 1; i <= this.pageNum; i++) { list.add(i); } return list; } // 当前的页码在最后几页且在偏移量范围之内 if (this.pagerIndex >= this.pagerCount - this.offsetNum) { for (int i = pagerCount - this.pageNum + 1; i <= this.pagerCount; i++) { list.add(i); } return list; } // 普通情况 for (int i = this.pagerIndex - offsetNum; i <= this.pagerIndex + this.offsetNum; i++) { list.add(i); } return list; } public static void main(String[] args) { Pager pager = new Pager(1, 100, 10); List list = pager.getShowPageStyle(); for (Integer integer : list) { System.out.println(integer); System.out.println("================"); } }}