自学内容网 自学内容网

将一个List集合按指定数目 均分为小的list集合

项目遇到想用的逻辑,有一个大的list对象集合,现在想按照指定的大小均分为小的list对象集合。
写一个操作方法:

public static <T> List<List<T>> split(List<T> resList, int count) {
        if (resList == null || count < 1) {
            return null;
        }
        List<List<T>> ret = new ArrayList<List<T>>();
        int size = resList.size();
        if (size <= count) {
            // 数据量不足count指定的大小
            ret.add(resList);
        } else {
            int pre = size / count;
            int last = size % count;
            // 前面pre个集合,每个大小都是count个元素
            for (int i = 0; i < pre; i++) {
                List<T> itemList = new ArrayList<T>();
                for (int j = 0; j < count; j++) {
                    itemList.add(resList.get(i * count + j));
                }
                ret.add(itemList);
            }
            // last的进行处理
            if (last > 0) {
                List<T> itemList = new ArrayList<T>();
                for (int i = 0; i < last; i++) {
                    itemList.add(resList.get(pre * count + i));
                }
                ret.add(itemList);
            }
        }
        return ret;
    }

使用方法:

public void run() {
     while (true) {
         try {
             List<SkyMirrorData> list = SkyMirrorDataCache.takeSkyMirrorData();
             if (list == null || list.size() == 0) {
                 continue;
             }
             List<List<SkyMirrorData>> ret = DealList.split(list, 200);
             if (ret.size() <= 1) {
                 Thread.sleep(3000);
             }
             for (List<SkyMirrorData> retList : ret) {
                 send(retList);
             }
         } catch (Exception e) {
             log.error(ExceptionUtil.getMessage(e), e);
         }
     }
 }

原文地址:https://blog.csdn.net/qq_33651286/article/details/142627765

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!