-1

在 Java 中,如果我在一个大文件中有一个变量的值,并且我想快速将该变量值与其在其他文件中的值进行比较,那么最好的方法是什么?第一个文件可能有超过一百万个唯一变量,我想将它们与其他文件中的值进行比较。也可以有很多比较文件。

有关文件的详细信息:文件存储不同时间片的不同变量的值,并包含数百万条记录和可能数百万个唯一变量。

格式
变量,值 A 为变量,值 B 为变量,值 C 为变量
id 1,一些值,一些值,一些值
id 2,一些值,一些值,一些值
id 3,一些值,一些值,一些值
.
.
.
id 3000000,一些值,一些值,一些值

我必须对 A、B、C 的值进行统计。我想我可以将结果保存在一个对象中一个时间片,但不能保存其他时间片,所以我应该写入文件并再次读取吗?也可能有很多时间片。

4

2 回答 2

1

Your question is short on many important details, but I'm assuming that you are talking about files consisting of name-value pairs in some format, and that a given name appears at most once in each file.

This lends itself to the classic sort-merge approach:

  1. Sort all files based on the names.
  2. Pick 2 files to be compared:
  3. Read the name/value pairs from the 2 files in parallel:
    • when names are equal, compare the corresponding values, then skip both pairs
    • when the names are not equal, skip the pair that has the smaller name, and read the next one from that file.
  4. Stop when you reach the end of either file.

Reference: http://en.wikipedia.org/wiki/Mainframe_sort_merge


Note: If you have of the order of a few million records, you should be able to do the sorting and merging in memory ... on a current generation home PC. If you have billions of records, you will need to use a sort algorithm that splits each (large) input file into subfiles, sorts each subfile, and then merges the result.

于 2012-10-12T09:56:11.957 回答
0

使用 Java 属性文件。甲骨文文档

它很好地管理了这样的键值对。

于 2012-10-12T09:50:21.183 回答