gpt4 book ai didi

java - 从 Java 调用 shell 命令不好吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:41:48 25 4
gpt4 key购买 nike

<分区>

我需要在 Java 中使用两个文件的差异集。每个文件大约有 5000 万行,所以我无法将它们完全加载到内存中。我可以完成这些阶段,但我打算使用 linux 中的 comm 命令,它可以有效地做到这一点。

  1. Java 中是否有一个库可以有效地完成这项工作?
  2. 从程序调用 shell 命令是不是糟糕的设计?

详情

我有 file1 和 file2,每个都有超过 4000 万行。我不想将它们放入内存中。我需要找到 file1 - file2 的集合差异。即在 file1 但不在 file2 中的行。一般来说,我会遵循算法:

 1. Read file1 line by line and save it in HashSet.
2. Read file2 line by line.
3. Remove each line of file2 from Hashset if present

有没有什么方法可以在不将 file1 保存在 Hashset 中的情况下执行此操作。

编辑:我的解决方案

终于决定用bloom来解决目的。我知道布隆过滤器给出了近似答案,但我已经将位集长度设置得足够长 *(14* 文件 1 的大小,即 1000 万)*,这使我的精度达到 10^-9。以下是算法

 1. Read each line of file2 and add to Bloom Filter.
2. Now, file2 is compressed from 300MB+ to 40MB+
3. Read each line of file1, if not present in filter print the line

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