Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 707|回复: 0

Java分页类

[复制链接]

该用户从未签到

发表于 2011-9-12 22:44:49 | 显示全部楼层 |阅读模式
import java.util.List;
/**
* Helper class that implements paging over a collection.
*
* @author        Simon Brown
*/
public class Pageable< T> {
    /** the default page size */
    public static final int DEFAULT_PAGE_SIZE = 10;
    private static final int PAGE_WINDOW = 10;
    /** the list over which this class is paging */
    private List< T> list;
    /** the page size */
    private int pageSize = DEFAULT_PAGE_SIZE;
    /** the current page */
    private int page;
    /** the starting index */
    private int startingIndex;
    /** the ending index */
    private int endingIndex;
    /** the maximum number of pages */
    private int maxPages;
    /**
     * Creates a new instance with the specified list.
     *
     * @param list        a List
     */
    public Pageable(List< T> list) {
        this.list = list;
        this.page = 1;
        this.maxPages = 1;
        calculatePages();
    }
    private void calculatePages() {
        if (pageSize > 0) {
            // calculate how many pages there are
            if (list.size() % pageSize == 0) {
                maxPages = list.size() / pageSize;
            } else {
                maxPages = (list.size() / pageSize) + 1;
            }
        }
    }
    /**
     * Gets the list that this instance is paging over.
     *
     * @return    a List
     */
    public List< T> getList() {
        return this.list;
    }
    /**
     * Gets the subset of the list for the current page.
     *
     * @return    a List
     */
    public List< T> getListForPage() {
        return list.subList(startingIndex, endingIndex);
    }
    /**
     * Gets the page size.
     *
     * @return    the page size as an int
     */
    public int getPageSize() {
        return this.pageSize;
    }
    /**
     * Sets the page size.
     *
     * @param pageSize     the page size as an int
     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
        calculatePages();
    }
    /**
     * Gets the page.
     *
     * @return    the page as an int
     */
    public int getPage() {
        return this.page;
    }
    /**
     * Sets the page size.
     *
     * @param p        the page as an int
     */
    public void setPage(int p) {
        if (p >= maxPages) {
            this.page = maxPages;
        } else if (p <= 1) {
            this.page = 1;
        } else {
            this.page = p;
        }
        // now work out where the sub-list should start and end
        startingIndex = pageSize * (page-1);
        if (startingIndex < 0) {
            startingIndex = 0;
        }
        endingIndex = startingIndex + pageSize;
        if (endingIndex > list.size()) {
            endingIndex = list.size();
        }
    }
    /**
     * Gets the maximum number of pages.
     *
     * @return    the maximum number of pages as an int
     */
    public int getMaxPages() {
        return this.maxPages;
    }
    /**
     * Determines whether there is a previous page and gets the page number.
     *
     * @return    the previous page number, or zero
     */
    public int getPreviousPage() {
        if (page > 1) {
            return page-1;
        } else {
            return 0;
        }
    }
    /**
     * Determines whether there is a next page and gets the page number.
     *
     * @return    the next page number, or 0
     */
    public int getNextPage() {
        if (page < maxPages) {
            return page+1;
        } else {
            return 0;
        }
    }
    /**
     * Gets the minimum page in the window.
     *
     * @return    the page number
     */
    public int getMinPageRange() {
        if (getPage() > PAGE_WINDOW) {
            return getPage() - PAGE_WINDOW;
        } else {
            return 1;
        }
    }
    /**
     * Gets the maximum page in the window.
     *
     * @return    the page number
     */
    public int getMaxPageRange() {
        if (getPage() < (getMaxPages() - PAGE_WINDOW)) {
            return getPage() + PAGE_WINDOW;
        } else {
            return getMaxPages();
        }
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-4-29 02:18 , Processed in 0.362343 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表