比较两个基于元素的集合并在java中连接

时间:2013-10-30 13:59:04

标签: java join collections compare

我有两个集合,其中包含从数据库中检索的键值对数据。

Collection<Map<String, Comparable>> user1 = function.call(.....);
Collection<Map<String, Comparable>> user2 = function2.call(....)

我想根据关键日期比较这两个集合,如果它们相等,则将其他列表附加到第一个列表。

让我们说两个集合上的关键名称是不同的。 示例 -

user1 - {price_id, user_id, price_created}
user2 - {delivary_id, user_id, delivery_created, delivery_metadata}

输入示例 - 请注意,两个数据之间的数据格式不同,我会修剪数据并进行比较。

user1数据 - {price_id = 1,user_id = 1, price_created = 2013-02-10 } {price_id = 2,user_id = 2, price_created = 2013-02-11 } {price_id = 3,user_id = 3, price_created = 2013-12-12 }

user2数据 - {delivary_id = 1,user_id = 1, delivery_created = 2013-02-10 06:33:08.0 ,delivery_metadata ='test user2 NE'} {delivary_id = 2,user_id = 2, delivery_created = 2013-12-10 06:33:08.0 ,delivery_metadata ='test user2 NE'} {delivary_id = 3,user_id = 3, delivery_created = 2013-12-12 06:33:08.0 ,delivery_metadata ='test user2 NE'}

预期的输出示例 - ,如内部联接(1和3行已与price_created和delivery_created共存)。

{price_id = 1,user_id = 1,price_created = 2013-02-10,delivary_id = 1,user_id = 1,delivery_created = 2013-02-10 06:33:08.0,delivery_metadata ='test user2 NE'} < / p>

{price_id = 3,user_id = 3,price_created = 2013-12-12,delivary_id = 3,user_id = 3,delivery_created = 2013-12-12 06:33:08.0,delivery_metadata ='test user2 NE'} < / p>

如果我想在user2上比较第一个user1和price_created的{​​{1}},我该如何执行该操作?我尝试在集合中使用addAll但无法传递参数进行比较。

帮助和正确的方向赞赏,我从来没有解决过这样的问题。这提醒了为什么SQL与强大的连接,聚合工具一起被引入!好吧,我的导师不想使用SQL,所以坚持使用java。

自己清理,谢谢!

0 个答案:

没有答案