美文网首页
List数据内存分页

List数据内存分页

作者: Raral | 来源:发表于2022-12-20 14:23 被阅读0次

    内存分页

    我们常常要对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操作获取详细信息
    敬请期待

    相关文章

      网友评论

          本文标题:List数据内存分页

          本文链接:https://www.haomeiwen.com/subject/yvzuqdtx.html