很多时候我们会遇到大批量数据往数据库写的场景,需要手写一个将集合分成很多份然后分批次入库。
当我们学习了1.8的Stream之后,会发现这很简单哈
JDK1.8 Stream
package com.bootMybatis.util;
import java.util.Collection;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Date: 2021/3/30 22:15
*/
public class CollectionUtil {
/**
* 切分集合
*
* @param collections 集合
* @param maxNum 每份大小
* @param <T>
* @return
*/
public static <T> Collection<Collection<T>> subCollection(Collection<T> collections, int maxNum) {
int limit = (collections.size() + maxNum - 1) / maxNum;
Collection<Collection<T>> splitCollection = Stream.iterate(
0, n -> n + 1).limit(limit).parallel().map(
a -> collections.stream().skip(a * maxNum).limit(maxNum).parallel()
.collect(Collectors.toList())).collect(Collectors.toList());
return splitCollection;
}
}