寻找文本之间的不同

【问题】
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)
3result [A1,A2].mergex@xd(1)

A3:对 A1 和 A2 的结果做差集运算,并将结果返回给 JAVA

上面的代码假设两个文件都很大,无法放进内存(比如 billion 条),需要事先排序,以此提高差集运算的性能。如果文件很小,无需事先排序,则可以使用 isect 函数进行集合运算。

集算器不仅可以进行交、并、差等多种集合运算,还可以通过 JDBC 与 JAVA 集成,请参考《Java 如何调用 SPL 脚本》。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值