一、需求说明
现有接口需对已注册用户批量注册至极光,极光提供接口仅支持单词500,故使用Stream截取数据库查询结果。
二、代码实现
// 查询所有需注册至极光的用户基础信息
List<JiGuangInfo> jiGuangInfos = getJiGuangInfoList();
// 总注册数
int countAll = jiGuangInfos.size();
// 批次注册数
int batchNum = 500;
// 供需多少批
int frequency = (countAll + batchNum -1) / batchNum;
List<List<JiGuangInfo>> splitList = Stream.iterate(0, n -> n + 1) // 创建流
.limit(frequency) // 取 frequency 个
.parallel() // 开启并行处理
.map( // 处理单项
a -> jiGuangInfos.stream()
.skip(a * batchNum) // 跳过元素
.limit(batchNum) // 取 batchNum 个
.parallel() // 开启并行处理
.collect(Collectors.toList())
)
.collect(Collectors.toList());