填充需要 1000 个其他文件的值的文件 - Java
Filling a file who needs values from 1000 other files - Java
假设您有这个我们将命名为 "toComplete":
的 .csv
[Date,stock1, stock2, ...., stockn]
[30-jun-2015,"NA", "NA", ...., "NA"]
....
[30-Jun-1994,"NA","NA",....,"NA"]
n = 1000,行数 = 5000。每行代表不同的日期。这是一个很大的文件,我不太习惯。
我的目标是用我将纳入其他 .csv 的值填充 "NA"。
事实上,每只股票我都有 1 个文件(仍然是 .csv)。这意味着我有 1000 个文件用于我的股票和我的文件 "toComplete".
以下是库存文件:
[Date, value1, value2]
[27-Jun-2015, v1, v2]
....
[14-Fev-2013,z1,z2]
每个股票文件中的日期都比 "toComplete" 文件中的日期少,并且股票文件中的每个日期都必然在 "toComplete" 的文件中。
我的问题是:填充我的文件的最佳方法是什么 "toComplete"?我试着逐行阅读它,但这很慢。我一直在逐行阅读 "toComplete",每一行我都在阅读 1000 只股票的文件以完成我的文件 "toComplete"。我认为有更好的解决方案,但我看不到。
编辑:
例如,要从 "toComplete" 的第二行和第二列替换 "NA",我需要调用我的文件 stock1,逐行读取它以找到 value1 中对应于第二个日期的值"toCompelte" 中的行。
我希望它现在更有意义。
编辑2:
日期已编辑。对于很多股票,我不会有价值。在这个例子中,我们只有从 14-Fev-2013 到 27-Jun-2015 的日期,这意味着最后会保留一些 "NA"(但这不是问题)。
我知道要搜索哪些文件,因为我的文件被命名为 stock1.csv、stock2.csv,...我将它们放在一个唯一的目录中,这样我就可以使用 .list() 方法。
所以您有 1000 个 "price history" 某些股票的 CSV 文件,每个文件最多包含 5000 天的价格历史记录,并且您想将这些文件中的数据合并到一个 CSV 文件中,其中每一行都以日期开头而该行的其余条目是该历史日期的多达 1000 个不同的股票价格? - 餐巾纸计算表明最终文件可能包含不到 1 MB 的数据(每个股票价格少于 20 字节意味着每行少于 20kb * 5k 行)。 256/512MB 的 JVM 中应该有足够的 RAM 来将你想要保留的数据从这 1000 个文件读取到一个 Map 中,其中键是日期,每个键的值是另一个具有 1000 个股票代码键和 1000 个股票的 Map值值。然后通过迭代 Map(s) 写出你的最终文件。
假设您有这个我们将命名为 "toComplete":
的 .csv[Date,stock1, stock2, ...., stockn]
[30-jun-2015,"NA", "NA", ...., "NA"]
....
[30-Jun-1994,"NA","NA",....,"NA"]
n = 1000,行数 = 5000。每行代表不同的日期。这是一个很大的文件,我不太习惯。 我的目标是用我将纳入其他 .csv 的值填充 "NA"。 事实上,每只股票我都有 1 个文件(仍然是 .csv)。这意味着我有 1000 个文件用于我的股票和我的文件 "toComplete".
以下是库存文件:
[Date, value1, value2]
[27-Jun-2015, v1, v2]
....
[14-Fev-2013,z1,z2]
每个股票文件中的日期都比 "toComplete" 文件中的日期少,并且股票文件中的每个日期都必然在 "toComplete" 的文件中。
我的问题是:填充我的文件的最佳方法是什么 "toComplete"?我试着逐行阅读它,但这很慢。我一直在逐行阅读 "toComplete",每一行我都在阅读 1000 只股票的文件以完成我的文件 "toComplete"。我认为有更好的解决方案,但我看不到。
编辑: 例如,要从 "toComplete" 的第二行和第二列替换 "NA",我需要调用我的文件 stock1,逐行读取它以找到 value1 中对应于第二个日期的值"toCompelte" 中的行。 我希望它现在更有意义。
编辑2: 日期已编辑。对于很多股票,我不会有价值。在这个例子中,我们只有从 14-Fev-2013 到 27-Jun-2015 的日期,这意味着最后会保留一些 "NA"(但这不是问题)。 我知道要搜索哪些文件,因为我的文件被命名为 stock1.csv、stock2.csv,...我将它们放在一个唯一的目录中,这样我就可以使用 .list() 方法。
所以您有 1000 个 "price history" 某些股票的 CSV 文件,每个文件最多包含 5000 天的价格历史记录,并且您想将这些文件中的数据合并到一个 CSV 文件中,其中每一行都以日期开头而该行的其余条目是该历史日期的多达 1000 个不同的股票价格? - 餐巾纸计算表明最终文件可能包含不到 1 MB 的数据(每个股票价格少于 20 字节意味着每行少于 20kb * 5k 行)。 256/512MB 的 JVM 中应该有足够的 RAM 来将你想要保留的数据从这 1000 个文件读取到一个 Map 中,其中键是日期,每个键的值是另一个具有 1000 个股票代码键和 1000 个股票的 Map值值。然后通过迭代 Map(s) 写出你的最终文件。