java8中stream流实现的集合拆分工具类

在开发中,有时候需要对一批数据进行拆分之后分批处理,这个时候就需要把一个大集合拆分成多个小集合。我们可以使用如下工具类:

/**
 * List工具类
 */
public class ListUtil {

    /**
     * 集合拆分
     * @param collections 原集合
     * @param size 子集合长度
     * @param <T>
     * @return
     */
    public static <T> List<List<T>> partition(Collection<T> collections, int size) {
        //参数校验
        if (collections == null) {
            throw new NullPointerException();
        }
        if (size <= 0) {
            throw new IllegalArgumentException();
        }
        //计算可以分几个集合
        int limit = (int) Math.ceil(collections.size() / (double) size);
        //使用流进行拆分
        return Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(i ->
                collections.stream().skip(i * size).limit(size).parallel().collect(Collectors.toList())
        ).collect(Collectors.toList());
    }

}

工具类使用了java8的Stream流实现,并使用了parallel()方法获取并行流并行处理增加效率。

支付宝搜索:344355 领取随机红包

如果文章对您有帮助的话,欢迎老板打赏↑↑↑(请我吃饭😋