我很确定这里可能已经进行了修改/类似的讨论,但我想从我这边提出我面临的可能解决方案的确切问题。然后我想听听你们的意见,什么是更好的方法或者我怎样才能批准我的逻辑。
问题
我有一个包含行的大文件。每行采用以下格式<weight>,<some_name>
。现在我要做的是添加所有具有相同名称的对象的权重。问题是
- 我不知道
some_name
文件中存在的频率。它可能只出现一次或数以百万计的全部可能是它 - 它没有被订购
- 我正在使用文件流(特定于 java,但没关系)
解决方案1:假设我有巨大的内存,我打算做的是逐行读取文件并使用key
我的hash_map中的名称。如果它已经在那里,总结它,否则添加。这将花费我m
ram(m = 文件中的行数),但整体处理速度会很快
解决方案 2:假设我没有巨大的 ram,我将分批进行。读取哈希表中的前 10,000 个,将其汇总并将其转储到文件中。对文件的其余部分执行此操作。完成文件处理后,我将开始阅读处理后的文件,并重复此过程以总结所有内容。
你们在这里有什么建议?
除了您的建议之外,我可以对文件进行并行文件读取吗?我可以在这里访问 FileInputStream,我可以使用 fileInputStream 来提高文件读取效率吗?