wordpress免费主题简约,seo行业岗位,望野古诗朗读,深圳装饰公司网站在对数据进行批量操作的时候#xff0c;由于数据量太大#xff0c;需要对数据进行拆分操作#xff0c;分成N个小集合。
代码如下#xff1a;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;import java.util.ArrayList;
import java.u…在对数据进行批量操作的时候由于数据量太大需要对数据进行拆分操作分成N个小集合。
代码如下
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;/*** 拆分集合** author HY* date 2023/11/21*/
public class SplitListUtils {/*** 拆分集合* p* 拆分方式有多种示例代码如下** pre* ListT subItemList null;* // 根据批次数遍历数据* for (int i 0; i batchCount; i) {* // 方式一* //if (i batchCount - 1) {* // itemList list.subList(subListLength * i, dataSize);* //} else {* // itemList list.subList(subListLength * i, subListLength * (i 1));* //}* //newList.add(itemList);** // 方式二* int start i * subListLength;* int end Math.min(start subListLength, dataSize);** subItemList list.subList(start, end);** newList.add(subItemList);* }* /pre** param T 泛型对象* param list 需要拆分的集合* param subListLength 每个子集合的元素个数* return 返回拆分后的各个集合组成的列表**/public static T ListListT split(ListT list, int subListLength) {ListListT newList new ArrayList();if (CollUtil.isEmpty(list) || subListLength 0) {return newList;}int dataSize list.size();if (dataSize subListLength) {// 数据量不足 subListLength 指定的大小newList.add(list);return newList;}// 批次处理数结果向上取整int batchSize (int) Math.ceil(1.0 * dataSize / subListLength);return IntStream.range(0, batchSize).mapToObj(index - getList(list, subListLength, dataSize, index)).collect(Collectors.toList());}private static T ListT getList(ListT list, int subListLength, int dataSize, int index) {int start index * subListLength;int end Math.min((index 1) * subListLength, dataSize);return list.subList(start, end);}public static void main(String[] args) {int size 10000009;ListString list IntStream.range(0, size).mapToObj(index - hello: index).collect(Collectors.toList());// 大集合里面包含多个小集合long beginTime System.nanoTime();ListListString temps split(list, 100);System.out.println(耗时 (System.nanoTime() - beginTime));int j 0;// 对大集合里面的每一个小集合进行操作for (ListString obj : temps) {System.out.println(StrUtil.format(row{}, size{}, j, obj.size()));}}
}
执行平均时间≈15ms