gpt4 book ai didi

java - 如何处理处理大型 csv 文件或分块读取大型 CSV 文件

转载 作者:行者123 更新时间:2023-11-30 08:10:43 26 4
gpt4 key购买 nike

我有非常大的 csv 文件,我正在尝试遍历这些文件。我正在使用 opencsv 并且我想使用 CsvToBean 以便我可以从数据库动态设置列映射。我的问题是如何在不抓取整个文件并将其放入列表的情况下执行此操作。我试图防止内存错误。

我目前正在将整个结果集传递到这样的列表中。

List<MyOption> myObjects = csv.parse(strat, getReader("file.txt"));

for (MyObject myObject : myObjects) {
System.out.println(myObject);
}

但我发现了这个迭代器方法,我想知道这是否只会迭代每一行而不是一次迭代整个文件?

Iterator myObjects = csv.parse(strat, getReader("file.txt")).iterator();

while (myObjects.hasNext()) {
MyObject myObject = (MyObject) myObjects.next();
System.out.println(myObject);
}

所以我的问题是 Iterator 和 list 有什么区别?

最佳答案

增强的 for 循环 ( for (MyObject myObject : myObjects) ) 是使用 Iterator 实现的(它要求 csv.parse(strat, getReader("file.txt")) 返回的实例实现 Iterable 接口(interface),其中包含返回 iterator()Iterator 方法),因此这两个代码片段之间没有性能差异。

附言

在第二个片段中,不要使用原始的 Iterator类型,使用 Iterator<MyObject> :

Iterator<MyObject> myObjects = csv.parse(strat, getReader("file.txt")).iterator();

while (myObjects.hasNext()) {
MyObject myObject = myObjects.next();
System.out.println(myObject);
}

关于java - 如何处理处理大型 csv 文件或分块读取大型 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531258/

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