List数据内存分页

2022-12-20  本文已影响0人  Raral

内存分页

我们常常要对List数据切分和分页,最近客户要求我们调用第三方接口拿到所有数据然后做分页返回给他 们,全量数据拿到后都是在缓存在内存中,这不像查询询数据库有语句支持,于是我们就搞了个List分页的工具类。这里分享一下我们使用的分页工具类。代码其实也是简单的,没什么难度,关键是提供给急需的朋友们。

代码工具类



public class ListSplitUtils {

    /**
     * 数组分割
     * @param batchList 被分割的数组
     * @param batchCount 分割后每个数组的长度
     * @param <T> 数组类型
     * @return 分割后的数组
     */
    public static <T> List<List<T>> split(List<T> batchList, int batchCount) {
        if (CollectionUtils.isEmpty(batchList)) {
            return Collections.emptyList();
        }

        List<List<T>> result = new ArrayList<>();
        int size = batchList.size();
        if (size <= batchCount) {
            result.add(batchList);
            return result;
        }

        int splitCount = size / batchCount;
        if (size % batchCount != 0) {
            splitCount++;
        }

        for (int i = 0; i < splitCount; i++) {
            List<T> splitList = new ArrayList<>(batchCount);
            int indexStart = i * batchCount;
            for (int j = 0; j < batchCount; j++) {
                int index = j + indexStart;
                if (index >= size) {
                    break;
                }
                T item = batchList.get(index);
                splitList.add(item);
            }
            result.add(splitList);
        }

        return result;
    }

}

使用多线程

如果每一页的数据需要做 rpc操作获取详细信息
敬请期待

上一篇下一篇

猜你喜欢

热点阅读