我有两个文件employee.txt
和salary.txt
。 employee.txt
包含员工详细信息的记录,如(empId, empName , age
)为CSV,salary.txt
包含(empId,salary,TDS paid, ...
)。
我想在第三个文件中写两个文件的公共记录(基于empId
相等)。我希望记录的交集像数据库中的JOIN
操作。
如何使用Java有效地完成此操作(如使用某些Collection)。
答案 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是我个人的最爱,但还有H2和Derby(a.k.a JavaDB)。
HSQLDB甚至可以使用您的CSV files directly as tables!