List分页工具


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

import org.apache.commons.collections.CollectionUtils;

/**
 * @author lvinie
 * @version 1.0 Copyright (c) 2015 youku, All Rights Reserved.
 * @Project ykkids-api
 * @Description: List数据分页
 * @Company youku
 * @Create 2019/01/18 下午4:43
 */
public class ListPageUtil<T> {
    /**
     * 每页显示条数
     */
    private int pageSize;

    /**
     * 总页数
     */
    private int pageCount;

    /**
     * 原集合
     */
    private List<T> data;

    public ListPageUtil(List<T> data, int pageSize) {
        this.pageSize = pageSize;
        if (CollectionUtils.isEmpty(data)) {
            this.data = new ArrayList<>();
            this.pageCount = 0;
        } else {
            this.data = data;
            this.pageCount = data.size() / pageSize;
            if (data.size() % pageSize != 0) {
                this.pageCount++;
            }
        }
    }

    /**
     * 得到分页后的数据
     *
     * @param pageNum 页码
     * @return 分页后结果
     */
    public List<T> getPagedList(int pageNum) {
        int fromIndex = (pageNum - 1) * pageSize;
        if (fromIndex >= data.size()) {
            return Collections.emptyList();
        }

        int toIndex = pageNum * pageSize;
        if (toIndex >= data.size()) {
            toIndex = data.size();
        }
        return data.subList(fromIndex, toIndex);
    }

    public int getPageSize() {
        return pageSize;
    }

    public List<T> getData() {
        return data;
    }

    public int getPageCount() {
        return pageCount;
    }
}

使用实例

//待分段list
List<String> list = new ArrayList<>();
//100-每100个分为一段
ListPageUtil<String> pager = new ListPageUtil<>(list,100);
            int totalPageNo = pager.getPageCount();
            int updateCount = 0;
            int insertCount = 0;
            for (int i = 1; i <= totalPageNo; i++) {
                List<RuleDTO> idList = pager.getPagedList(i);
            }

猜你喜欢

转载自blog.csdn.net/qq_56044050/article/details/126353853