Java文件记录的交集

时间:2011-04-11 08:56:33

标签: java

我有两个文件employee.txtsalary.txtemployee.txt包含员工详细信息的记录,如(empId, empName , age)为CSV,salary.txt包含(empId,salary,TDS paid, ...)。

我想在第三个文件中写两个文件的公共记录(基于empId相等)。我希望记录的交集像数据库中的JOIN操作。

如何使用Java有效地完成此操作(如使用某些Collection)。

3 个答案:

答案 0 :(得分:1)

运行第一个文件并维护一个哈希表,其中键是empid,并且值为employee.txt中的值。然后在下一步中运行第二个文件。在构建的哈希表中使用第二个文件查找中的empid是否有这样的键。如果是:从哈希表中获取值并将其写入第二个文件中的记录信息。不:只是跳过记录。重复直到第二个文件结束。

答案 1 :(得分:0)

好吧,一种方法是将两个文件的内容加载到您选择的数据库系统中。对生成的两个表执行SQL JOIN,并将结果写入另一个csv文件。这甚至可以在没有Java的情况下完成。 Simly使用DBMS管理工具,如phpMyAdmin for Mysql。

另一种方法是读取两个文件,编写自己的csv“Parser”或使用一些existing one。然后在双循环中检查两个文件在empId上是否相等,并将公共记录存储到第三个数组。可以像以前一样手动或使用您选择的csv类导出到csv。

希望这会有所帮助。

答案 2 :(得分:0)

由于JOIN是数据库的全部内容,并且您基本上自己实现了(部分)数据库,为什么不使用现有的内存数据库呢?

HSQLDB是我个人的最爱,但还有H2Derby(a.k.a JavaDB)。

HSQLDB甚至可以使用您的CSV files directly as tables