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;
        }
    }
  • 相关阅读:
    Linq to OBJECT延时标准查询操作符
    LINQ to XML
    动态Linq(结合反射)
    HDU 1242 dFS 找目标最短路
    HDu1241 DFS搜索
    hdu 1224 最长路
    BOJ 2773 第K个与m互质的数
    ZOJ 2562 反素数
    2016 ccpc 杭州赛区的总结
    bfs UESTC 381 Knight and Rook
  • 原文地址:https://www.cnblogs.com/libin6505/p/11249273.html
Copyright © 2011-2022 走看看