【发布时间】:2018-03-13 19:50:00
【问题描述】:
我有两个不同的 csv 文件,其中包含两个不同实体的数据,我必须合并两个不同的 csv 文件以基于 sql 连接类型 equijoin 和 left join 创建一个。
所以我创建了第一个实体作为具有属性的类名客户:
int CustomerId ;
String CustomerName;
int OrderId;
该类的对象列表如:
Customer c1 = new Customer(CustomerId, CustomerName, OrderId);
1 million objects..
List<Customer> cust = new ArrayList<>();
cust.add(c1);
cust.add(c2);
so on to make list of 1 million object.
同样,我创建了具有属性的第二个实体 Order 类:
int orderId;
String orderName;
Date orderdate;
Order o1 = new Order(orderId, orderName, orderdate);
so on 1 million object
List<Oder> order = new ArrayList<>();
现在我需要在 orderId 的基础上合并两个对象,并生成第三个对象,其结果类具有上述两个类的所有属性。
请建议我使用 java 流 8 映射列表流以在第三个新结果类中创建内连接和左连接类型示例的解决方案。
【问题讨论】:
-
您使用
List并想使用流的任何特殊原因? -
基本上我想读取两个不同的 csv 文件,其中一列具有主键和外键关系。并使用 java 我想处理这两个 csv 以使用 sql 连接创建一个 csv 连接或等连接或左连接,具体取决于连接两个 csv 的请求,但应用程序应支持这两种连接类型。我从这个逻辑开始创建对象列表并考虑使用 java 8。如果你知道,请给我一个更好的方法。谢谢
-
你说的sql是什么意思?你想使用数据库吗?您可以在内存中使用
h2,您可以将 csv 文件直接加载到其中并从中写入。 -
-
并且在第二个文件中,我们在左连接中得到的结果是第一个文件中的所有数据,如果第二个文件列值不存在,则为空:
标签: java arraylist merge java-stream