寻找文本之间的不同

【问题】
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 脚本》。