• Java


    背景

    今天由于要使用多线程,所以事先需要确定启动线程个数。于是需要先将集合进行分配,确定线程的个数。

    解决方案

    首先是实现

    public static <T> List<List<T>> splitList(List<T> list, int blockSize) {  
            List<List<T>> lists = new ArrayList<List<T>>();  
            if(blockSize == 1){
                lists.add(list);
                return lists;
            }
            if (list != null && blockSize > 0) {  
                int listSize = list.size();  
                if(listSize<=blockSize){  
                    lists.add(list);  
                    return lists;  
                }  
                int batchSize = listSize / blockSize;  
                int remain = listSize % blockSize;  
                for (int i = 0; i < batchSize; i++) {  
                    int fromIndex = i * blockSize;  
                    int toIndex = fromIndex + blockSize;  
                    System.out.println("fromIndex=" + fromIndex + ", toIndex=" + toIndex);  
                    lists.add(list.subList(fromIndex, toIndex));  
                }  
                if(remain>0){  
                    System.out.println("fromIndex=" + (listSize-remain) + ", toIndex=" + (listSize));  
                    lists.add(list.subList(listSize-remain, listSize));  
                }  
            }  
            return lists;  
        }

    其次是调用

    List<List<String>> sublists = splitbList(transNoList, nCount/ThreadCount);

    我们可以看到,返回的结构List<List<T>>的每一个元素都是一个list对象,即每一个分配好的小集合 :)

  • 相关阅读:
    pip的认识
    java动态代理
    hadoop集群环境配置成功与否查看方法
    input输入框只能输入数字、字母相关组合
    ASP.NET Core MVC上传、导入、导出知多少
    MQTT
    高德地图
    油猴脚本
    excel中001如何输入
    WebPageBase.IsSectionDefined(String) 方法
  • 原文地址:https://www.cnblogs.com/atuotuo/p/7210582.html
Copyright © 2020-2023  润新知