public static int BULK_COUNT = 2000;
public static <T> List<List<T>> splitList(List<T> oriList,boolean isParallel){
if(oriList.size() <= ESConstant.BULK_COUNT){
List<List<T>> splitList = new ArrayList<>();
splitList.add(oriList);
return splitList;
}
int limit = (oriList.size() + ESConstant.BULK_COUNT - 1) / ESConstant.BULK_COUNT;
if(isParallel){
return Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> oriList.stream().skip(a * ESConstant.BULK_COUNT).limit(ESConstant.BULK_COUNT).parallel().collect(
Collectors.toList())).collect(Collectors.toList());
}else{
final List<List<T>> splitList = new ArrayList<>();
Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {
splitList.add(oriList.stream().skip(i * ESConstant.BULK_COUNT ).limit(ESConstant.BULK_COUNT ).collect(Collectors.toList()));
});
return splitList;
}
}
上述方法用于将大集合拆分成若干个小集合的处理思路;