我有 Iterable<CSVRecord> = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in)
(apache共享) 記錄這是> 10.000.000.000行。以前我曾經用循環計數器,並在每個x行之後處理數據。現在我試圖用Java 8 lambda表達式實現類似的效果。如何分割與lambda表達式塊Iterable
到目前爲止,我想出了這一點,但它運行的內存,因爲我無法找到正確的方式如何分割,在subList
Iterable<List<?>> params = new ArrayList<>(StreamSupport
.stream(records.spliterator(), true)
.map(r -> Arrays.asList(
r.get("name"),
r.get("surname"),
r.get("something"),
))
.collect(Collectors.toList()).subList(0, 20000));
子列表在結尾不工作:(
我只需要概念的一些證據如何分割Iterable
- 例如,正確的地方在哪裏把subList
是「記錄」列表嗎?如果是這樣,也許你可以使用guava中的Lists.partition(在Iterables中也有一個版本)。 – 2017-08-11 15:20:04
更新了我的問題。調試器說,記錄是'org.apache.commons.csv.CSVParser' – lapkritinis