【问题标题】:How to join two ArrayList in Java如何在Java中加入两个ArrayList
【发布时间】:2017-04-21 12:29:25
【问题描述】:

我有两个包含字典数组的对象。 Array 中HashMap 的每个条目将包含大约 40-50 个字段。对象 2 HashMap 可能包含不同的键,但两个对象之间会有一个通用键。

object1 = ArrayList<HashMap<String, Object>>

object2 = ArrayList<HashMap<String, Object>>

Object1 HashMap 的字段很少 字段1、字段2、字段3、字段4...

Object2 HashMap 的字段很少 字段4,字段5,字段6,字段7..

我想加入公共字段 4 上的两个对象,结果数组应该包含所有字段 1 到 7

输出应该和sql查询一样。

Select * from object1, Object2 where object1.field4 = object2.field4

如果 object1 有 3 行,而 Object2 有 5 行,则如果所有键都匹配,则输出列表将有 15 行。匹配的 field4 在两个对象中都不是唯一的。

【问题讨论】:

  • 这不是代码编写服务。到目前为止你尝试了什么?发布您的代码!运行时发生了什么?你期望会发生什么?你具体有什么问题? stackoverflow.com/help/mcve
  • 使用 Java 8 lambdas,首先用 flatMap 制作笛卡尔积,将两个 hashmap 合并为一个,然后过滤结果。

标签: java database join arraylist hashmap


【解决方案1】:

您可以简单地执行以下操作:

List<HashMap <String , Object >> listFinal = 
               new ArrayList<HashMap < String , Object >>();
listFinal.addAll(object1);
listFinal.addAll(object2);

这里我使用addAll()方法将两个列表相加。

有关更多信息,您可以参考here

【讨论】:

  • 应该是字符串而不是字符串
  • 谢谢,但它不会加入键。假设object1 是Employee,Object2 是Department,那么在两个hashmap 调用departmentId 中都会有键。它应该加入那个键。如果 object1 有 3 个员工,object2 有 2 个部门,则输出将有 6 行。
  • @user3258915 好的。然后你需要编写一个 if 循环并检查键。然后,如果它符合您的条件,则将其添加到列表中,否则什么也不做。
  • 来自.net背景,这可以使用Linq在一行中完成。在 Java 中寻找类似的东西。可能是流 API 或 Google guava。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2012-12-06
  • 1970-01-01
相关资源
最近更新 更多