将一个List拆分为n份的方法
2024-09-07 12:39:14
public static void main(String[] args) {
List<Integer> taskList = new ArrayList<>();
for (int i = 1; i <= 52; i++) {
taskList.add(i);
}
int total = taskList.size();
int threadNum = 5;
int remaider = total % threadNum; // 计算出余数
int number = total / threadNum; // 计算出商
int offset = 0;// 偏移量
for (int i = 0; i < threadNum; i++) {
if (remaider > 0) {
List<Integer> subList = taskList.subList(i * number + offset, (i + 1) * number + offset + 1);
remaider--;
offset++;
System.out.println(subList.get(0) + "--" + subList.get(subList.size() - 1));
} else {
List<Integer> subList = taskList.subList(i * number + offset, (i + 1) * number + offset);
System.out.println(subList.get(0) + "--" + subList.get(subList.size() - 1));
}
}
}
打印结果:
1--11
12--22
23--32
33--42
43--52
一种错误的写法:
int page = 10;
int pageSize = (total + page - 1) / page;
for (int i = 1; i <= page; i++) {
List<String> subList = list.subList((i - 1) * pageSize, i == page ? total : i * pageSize);
}
例如将6个分为5份,算得每一份size为2(其实只是最大的一份为2),这样前3份就将数据分完了,到第4份就会报IndexOutOfBoundsException.
最新文章
- Python基础(二)之list
- c#中栈和堆的理解
- ALTERA MAX10官方评估板,新鲜出炉!
- C#之你懂得的序列化/反序列化
- setChecked方法触发onCheckedChanged监听器问题
- php接口加密
- 【NOIP模拟】LCS及方案数(DP)
- IIS网站本机可以访问但局域网其他机器无法访问 解决方法
- 手持机设备公司(WINCE/ANDROID/LINUX)
- 在windows中创建.gitignore文件
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165321
- Spark WordCount 文档词频计数
- HTML 中的 href\src\url
- Part-Eight 模板与群体数据的组织
- JS中的三种循环
- 【MySQL】【2】数字排序问题
- 3--Python入门--Python数据集合类型--元组
- 非递归和递归分别实现求第n个斐波那契数。
- 用Javascript开发网页截屏插件
- MYSQL——root密码更换