zoukankan      html  css  js  c++  java
  • 分页工具类

    写的一个分页工具类,如果有问题的话,请指正,谢谢

    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 List<Integer> getShowPageStyle() {
    		List<Integer> list = new ArrayList<Integer>();
    		// 当分页的总数量小于等于显示分页的数量
    		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<Integer> list = pager.getShowPageStyle();
    		for (Integer integer : list) {
    			System.out.println(integer);
    			System.out.println("================");
    		}
    	}
    }
    
  • 相关阅读:
    Codeforces Round #352 (Div. 1) B. Robin Hood (二分)
    Codeforces Round #209 (Div. 2) D. Pair of Numbers (模拟)
    Kattis
    kattis Curious Cupid (莫队算法)
    HYSBZ
    SPOJ NETADMIN
    day26-2 基于TCP协议的套接字编程
    day26-1 TCP三次握手和四次挥手
    day25-2 OSI协议和socket抽象层
    day25-1 网络架构与互联网组成
  • 原文地址:https://www.cnblogs.com/yxdz/p/7528595.html
Copyright © 2011-2022 走看看