栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java内存分页辅助类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java内存分页辅助类

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;


public class PageData {

    // data
    private List data;

    // page info
    private long pageNum;
    private long pageSize;
    private long totalPage;
    private long totalSize;

    public PageData(List data, long pageSize) {
        if (data == null) {
            throw new RuntimeException("data could not be null");
        }
        if (pageSize <= 0) {
            throw new RuntimeException("page size could not less than 0");
        }
        this.data = data;
        this.pageSize = pageSize;
        this.totalSize = data.size();
        this.pageNum = 0;
        this.totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
    }

    
    public boolean hasNext() {
        return pageNum < totalPage;
    }

    
    public List nextPage() {
        if (hasNext()) {
            return page(++pageNum);
        }
        throw new RuntimeException("out of bounds");
    }

    
    public boolean hasLast() {
        return pageNum > 1;
    }

    
    public List lastPage() {
        if (hasLast()) {
            return page(--pageNum);
        }
        throw new RuntimeException("out of bounds of page data");
    }

    
    public List page(long page) {
        return page(page, this.pageSize);
    }

    
    public List page(long page, long pageSize) {
        if (page <= 0 || pageSize <= 0) {
            throw new RuntimeException("page or page size could not less than 0");
        }
        return data.stream()
                .skip((page - 1) * pageSize)
                .limit(pageSize)
                .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        // example for this
        List list = new ArrayList<>();
        for (int i = 0; i < 100; i++){
            list.add(i);
        }

        PageData pageData = new PageData<>(list, 30);
        while (pageData.hasNext()){
            List currentPageData = pageData.nextPage();
            System.out.println(currentPageData.size()); // 30, 30, 30, 10
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号