zoukankan      html  css  js  c++  java
  • 集合切割

    package list.split;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListSplit {
    
        public static void main(String[] args) {
            List<Integer> list = new ArrayList<>();
            for (int i = 0; i < 17; i++) {
                list.add(i);
            }
            
            
            m1(list,3);
            System.out.println( m2(list,3));
            
        }
    
        //直接在循环中处理数据
        public static <T> void m1(List<T> list,int batchLen) {
            //实际处理数量
            int num = 0;
            
            //原始集合
    //        List<Integer> list = new ArrayList<>();
            System.out.println("应该处理数量:"+list.size());
            //预计每批数量
    //        int batchLen = 3;
            //每批集合临时存储
            List<T> batchlist = new ArrayList<>();
           
            for (int i = 0; i < list.size(); i++) {
                T item = list.get(i);
                batchlist.add(item);
                if ((i+1) % batchLen == 0) {
                    //对这批数据batchlist进行处理 todo
                    num += batchlist.size();
                    System.out.println(num);
                    System.out.println(batchlist);
                    batchlist.clear();//处理完清空批次集合
                }
            }
            
            //处理最后一批数据
            if (batchlist.size()>0) {
                 //对这批数据batchlist进行处理 todo
                num += batchlist.size();
                System.out.println(batchlist);
            }
            
            System.out.println("实际处理数量:"+num);
        }
    
        //返回切割后的大集合
        public static <T> List<List<T>> m2(List<T> list,int batchLen) {
            System.out.println("应该处理数量:"+list.size());
            // 总的结果集合
            List<List<T>> listGroup = new ArrayList<List<T>>();
            //原始结合长度
            int listSize = list.size();
            
            if (listSize < batchLen) {
                listGroup.add(list);
                return listGroup;
            }
            // 子集合的长度
            int toIndex = batchLen;
            for (int i = 0; i < listSize; i += batchLen) {
                if (i + batchLen > listSize) {
                    toIndex = listSize - i;
                }
                List<T> newList = list.subList(i, i + toIndex);
                listGroup.add(newList);
            }
            return listGroup;
        }
    }
  • 相关阅读:
    在JBuilder8中使用ANT
    协程初探
    JavaScript编写了一个计时器
    Codeforces Round #272 (Div. 1)D(字符串DP)
    UI測试内容
    我为什么做程序猿訪谈录
    使用Java高速实现进度条
    做web项目时对代码改动后浏览器端不生效的应对方法(持续更新)
    将markdown格式转化为bootstrap风格html
    char* 和char[]的差别
  • 原文地址:https://www.cnblogs.com/libin6505/p/11249273.html
Copyright © 2011-2022 走看看