Java分页工具

博客主要提及Java分页工具,在信息技术领域,Java常用于后端开发,分页工具可帮助处理数据分页展示等需求,提高数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Java分页工具

import java.util.ArrayList;
import java.util.List;

/**
 * 分页
 */
public class PageUtil<T>{

    /**
     * 所有的记录
     */
    private List<T> allList=null;
    /**
     * 每页需要显示的数据
     */
    private List<T> pageList=null;
    /**
     * 所有记录总条数
     */
    private int sum=0;
    //每页显示记录条数
    private int per_record;
    /**
     * 总页数
     */
    private int page_counts=0;
    /**
     * 当前页
     */
    private int this_page=0;

    public PageUtil(List<T> list,int currentPage,int pageSize) {
        //配置每页显示记录数
        this.per_record=pageSize;
        //配置所有记录
        this.allList=list;
        //配置记录总数
        this.sum=this.allList.size();
        //配置总页数
        calculatePerRecord();
        //配置当前页页码
        setThisPage(currentPage);
        //配置当前页记录
        setThisList();


    }
    /**
     *
     * @Description:<p>配置当前页页码</p>
     */
    public void setThisPage(int Page) {
        if(Page<=1) {
            Page=1;
        }else if(Page>=this.page_counts) {
            Page=this.page_counts;
        }
        //内部真正页码是从0开始 所以减一
        this.this_page =Page-1;
        //每次设置页码的时候都从新配置一下当前页的数据
        setThisList();
    }
    /**
     *
     * @Description:<p>计算总页数</p>
     */
    private void calculatePerRecord() {
        //如果所有记录list为空,直接终止计算
        if(this.getAllList()==null) {
            return ;
        }
        //如果所有记录刚刚好整除每页显示的记录条数
        int sumPage=this.sum/this.per_record;
        //否则就多了一页不完全页
        if(this.sum%this.per_record>0) {
            ++sumPage;
        }
        this.page_counts = sumPage;
    }

    /**
     *
     * @Description:<p>配置当前页是数据</p>
     */
    private void setThisList(){
        //每页开始索引
        int index_start=this.this_page*this.per_record;
        //每页结束索引
        int index_end=(this.this_page+1)*this.per_record>this.allList.size()?
                this.allList.size():(this.this_page+1)*this.per_record;
        //存数据进当前页之前 先清空当前页的数据
        this.pageList=new ArrayList();

        for (int i = index_start; i <index_end; ++i) {
            this.pageList.add(this.allList.get(i));
        }
    }

    public List<T> getAllList() {
        return allList;
    }
    public List<T> getPageList() {
        return pageList;
    }
    public int getSum() {
        return sum;
    }
    public int getPer_record() {
        return per_record;
    }
    /**
     *
     * @Description:<p>配置每页显示的记录条数</p>
     */
    public void setPer_record(int per_record) {
        this.per_record = per_record;
        //重新配置每页显示的记录条数后,需要重新配置总页数和当前页的记录
        setThisList();
        calculatePerRecord();
    }

    public int getPage_counts() {
        return page_counts;
    }
    public int getThis_page() {
        return this_page+1;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值