我有一个包含项目列表的大文件。
我想创建一批项目,并使用该批次发出 HTTP 请求(所有项目都需要作为 HTTP 请求中的参数)。我可以很容易地做到这一点for
循环,但作为 Java 8 爱好者,我想尝试使用 Java 8 的 Stream 框架编写这个(并获得延迟处理的好处)。
Example:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)