以前进行集合的拆分,均是使用循环的方式进行进行等分,前些日子,看到有好的方式可以更简单的等分,所以就记录下来,方便后续查看,代码使用List的subList方式进行拆分,代码如下
/**
* 将大集合拆分为小集合
*
* @param result
* @param count 拆分后每个集合的等分数量
* @return
*/
public static List<List<String>> splitResult(List<String> result, int count) {
// 如果集合为空或者等分数小于1,则直接返回null
if (CollectionUtils.isEmpty(result) || count < 1 ) {
return null;
}
List<List<String>> list = new ArrayList<List<String>>();
if(result.size() <= count){
list.add(result);
return list;
}
// 使用list的subList的方法进行分割
// 获得等分个数
int size = result.size() / count;
// 等分之后,还剩余多少个
int remain = result.size() % count;
for (int i = 0 ; i < size ; i ++){
int from = i * count;
int to = (i + 1 ) * count;
list.add(result.subList(from, to));
}
// 如果有余数,则额外处理
if (remain > 0){
list.add(result.subList((result.size() - remain),result.size()));
}
return list;
}