简介 在开发中,我们需要将一个List数组按照每组几个,平均分成若干份,如果size数量不够平均分,前面满足的会分满,剩下的分到最后一个组,例如:6个,平均每组2个。就是2,2,2。如果每组4个,就是4,2。
代码语言:javascript复制代码如下
/**
* 将一个List均分成n个list,主要通过偏移量来实现的
*
* @param source 源集合
* @param limit 最大值
* @return
*/
public static <T> List<List<T>> averageAssign(List<T> source, int limit) {
if (null == source || source.isEmpty()) {
return Collections.emptyList();
}
List<List<T>> result = new ArrayList<>();
int listCount = (source.size() - 1) / limit 1;
int remaider = source.size() % listCount; // (先计算出余数)
int number = source.size() / listCount; // 然后是商
int offset = 0;// 偏移量
for (int i = 0; i < listCount; i ) {
List<T> value;
if (remaider > 0) {
value = source.subList(i * number offset, (i 1) * number offset 1);
remaider--;
offset ;
} else {
value = source.subList(i * number offset, (i 1) * number offset);
}
result.add(value);
}
return result;
}