gpt4 book ai didi

Java 8 将列表拆分为 block 进行处理并在返回结果之前将其合并回来

转载 作者:行者123 更新时间:2023-12-02 19:22:02 24 4
gpt4 key购买 nike

我开始使用 java 8 中的流,我想做一些感觉应该是可能的事情,但不知何故似乎无法实现它。

我必须从我的服务调用外部服务,该服务最多可以处理 500 个唯一 ID 和给定时间。我的服务可以在给定时间接收任意数量的此类信息。

我正在寻找一种简短而精确的方法来将传入 id 的列表拆分为 500 的大小,调用外部服务并在返回结果之前合并它们(如果我们可以并行执行此操作,则会有奖励)

private List<ServiceReply> makeServiceCallByBatch(List<Long> ids,AuthToken authToken){
//make external call and get reply
}

public List<ServiceReply> makeServiceCall(List<Long> ids,AuthToken authToken){
private int BATCH_SIZE = 500;
if(ids.size() > BATCH_SIZE){
//split by batch and process each batch and merge it all
} else{
return makeServiceCallByBatch(ids,authToken)
}
}

最佳答案

Listsublist(int fromIndex, int toIndex)方法,允许您获取较大 List 中特定范围内的对象的 List。您可以使用它以 500 的间隔从完整的 List 中提取 List。所以类似 -

int index = 0;
int batchSize = 500;
while (index < ids.size()) {
//used made up method name for doing whatever processing you need to do...
processBatch(ids.sublist(index, Math.min(index + batchSize, ids.size())), authToken);
index += batchSize;
}

关于Java 8 将列表拆分为 block 进行处理并在返回结果之前将其合并回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60380405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com