比较java文件中不同文件的值

比较java文件中不同文件的值,java,text-files,Java,Text Files,在Java中,如果我在一个大文件中有一个变量的值,并且我想快速地将该变量的值与其他文件中的值进行比较,那么最好的方法是什么?第一个文件可能包含超过一百万个唯一变量,我希望将这些变量与其他文件中的值进行比较。也可以有很多比较文件 有关该文件的详细信息: 这些文件在不同的时间段存储不同变量的值,并包含数百万条记录和可能数百万个唯一变量 格式 变量,值A表示变量,值B表示变量,值C表示变量 id 1,一些值,一些值,一些值 id 2,一些值,一些值,一些值 id 3,一些值,一些值,一些值 . . .

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

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

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


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

使用Java属性文件


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

您的问题缺少许多重要的细节,但我假设您所讨论的文件是由某种格式的名称-值对组成的,并且给定的名称在每个文件中最多出现一次

这适用于经典的排序合并方法:

  • 根据名称对所有文件进行排序
  • 选择两个要比较的文件:
  • 并行读取2个文件中的名称/值对:
    • 当名称相等时,比较相应的值,然后跳过这两对
    • 当名称不相等时,跳过名称较小的一对,然后从该文件中读取下一个名称
  • 到达任一文件的末尾时停止
  • 参考:



    注意:如果你有几百万条记录,你应该能够在内存中进行排序和合并。。。在当前一代家用电脑上。如果您有数十亿条记录,则需要使用排序算法,将每个(大)输入文件拆分为子文件,对每个子文件进行排序,然后合并结果。

    首先遍历文件,然后将值存储在某个位置(如ArrayList、Map,具体取决于您的需要)然后比较ArrayList\Map值。您需要详细说明,您的问题并没有真正阐明您想要什么以及这些文件中数据的序列化格式,简而言之,您希望读取fies,然后在内存中执行比较。对于非Java的文件,您可以使用
    grep
    ,但可能会节省你很多时间。