Java - 将 List 等分(最后一部分处理多余部分)
2017-07-20 12:29
190 查看
背景
今天由于要使用多线程,所以事先需要确定启动线程个数。于是需要先将集合进行分配,确定线程的个数。解决方案
首先是实现
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对象,即每一个分配好的小集合 :)
相关文章推荐
- java 将list按指定大小等分,最后多余的单独一份
- 将list按blockSize大小等分,最后多余的单独一份
- 将list按指定大小等分,最后多余的单独一份
- 在JSTL EL中处理java.util.Map,及嵌套List的情况
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
- Java8 利用Lambda处理List集合
- java List(分割)分批处理
- JAVA 多线程处理大数据LIST
- Frederick Brooks: 计算机科学家的使命是制造工具 II, 翻译连载第5部分,也是最后一部分
- Java中,List菜单树的生成,最后转成json传给前台
- java基于poi的excel表格处理(自定义注解、针对List与enum进行处理)
- java List的<>中 方法参数是父类对象的list。传入子类对象时的处理
- java对List去重并排序、如何快速地去掉两个List中相同的部分
- Java中字符串与数组,数组与list之间的转化,及字符串处理
- JAVA中的SQL批处理及最后消耗的总时间的测试用例
- Java将一个list等分成n个list方法
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
- JAVA中将一个List等分成n个list的工具方法
- java字符串处理的部分方法
- 使用java的List<map> 实现树状目录(后端部分)