gpt4 book ai didi

具有批处理功能的 Java 8 Stream

转载 作者:IT老高 更新时间:2023-10-28 11:48:48 24 4
gpt4 key购买 nike

我有一个包含项目列表的大文件。

我想创建一批项目,用这批项目发出一个 HTTP 请求(所有项目都需要作为 HTTP 请求中的参数)。我可以使用 for 循环非常轻松地做到这一点,但作为 Java 8 爱好者,我想尝试使用 Java 8 的 Stream 框架编写它(并获得延迟处理的好处)。

例子:

List<String> batch = new ArrayList<>(BATCH_SIZE);
for (int i = 0; i < data.size(); i++) {
batch.add(data.get(i));
if (batch.size() == BATCH_SIZE) process(batch);
}

if (batch.size() > 0) process(batch);

我想做一些很长的事情lazyFileStream.group(500).map(processBatch).collect(toList())

最好的方法是什么?

最佳答案

为了完整起见,这里是 Guava解决方案。

Iterators.partition(stream.iterator(), batchSize).forEachRemaining(this::process);

在问题中,集合可用,因此不需要流,它可以写成,

Iterables.partition(data, batchSize).forEach(this::process);

关于具有批处理功能的 Java 8 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641383/

24 4 0