寻找文本之间的不同
【问题】
I have two text files like file1.txt and file2.txt as follows
file1.txt
---------
Syed
Sheethal
Mirko
Rathod
.
.
.
file2.txt
---------
Syed
Vijay
Akash
.
.
.
.
Both files has millions of records. I need to do file1.txt - file2.txt means.
Can any body give me logical best approach, how we can do this.
Thanks & Regards,
Syed
【回答】
上述说的需求其实是集合运算中的差集。JAVA 对集合运算支持不足,需要书写大量代码才能实现。可以试试用集算器来辅助 JAVA,这个算法就很容易实现了。
代码如下:
A |
|
1 |
=file("e:\\f1.txt").cursor().sortx(_1) |
2 |
=file("e:\\f2.txt").cursor().sortx(_1) |
3 |
result [A1,A2].mergex@xd(1) |
A3:对 A1 和 A2 的结果做差集运算,并将结果返回给 JAVA
上面的代码假设两个文件都很大,无法放进内存(比如 billion 条),需要事先排序,以此提高差集运算的性能。如果文件很小,无需事先排序,则可以使用 isect 函数进行集合运算。
集算器不仅可以进行交、并、差等多种集合运算,还可以通过 JDBC 与 JAVA 集成,请参考《Java 如何调用 SPL 脚本》。