/**
* 分割列表
*
* @param list 列表
* @param partitionSize 分割数量
* @param b 是:余数倒着插入 否:余数正着插入
* @return 分割后列表
*/
public List<List<StudentAdjust>> partition(List<StudentAdjust> list, int partitionSize, Boolean b) {
List<List<StudentAdjust>> partitions = new ArrayList<>();
// 计算平均每个子列表的大小
int averageSize = list.size() / partitionSize;
int remainder = list.size() % partitionSize; // 计算余数
int startIndex = 0;
for (int i = 0; i < partitionSize; i++) {
int sublistSize = averageSize + (i < remainder ? 1 : 0); // 如果i小于余数,则当前子列表大小加1
// 创建子列表
List<StudentAdjust> sublist = new ArrayList<>(list.subList(startIndex, startIndex + sublistSize));
partitions.add(sublist);
// 更新起始索引
startIndex += sublistSize;
}
if (b) {
Collections.reverse(partitions);
}
return partitions;
}
Java分割一个列表成多个列表
最新推荐文章于 2024-10-10 09:56:47 发布