【问题标题】:How do i merge multiple lists of string arrays in Java?如何在 Java 中合并多个字符串数组列表?
【发布时间】:2019-08-06 09:33:04
【问题描述】:

我在 Java 中工作,我有三个列表,这些列表由填充了字符串 (List) 的数组组成,这些字符串我已经制作了流。第一个列表包含多个数组,其中包含两个字符串(我们称它们为 COUNTRY 和 CITY)。第二个列表具有相同的格式,但由 CITY 和 ROAD 组成,最后一个列表包含具有 5 个字符串(ROAD、A、B、C 和 D)的数组。

我需要做的是将这三个列表合并为一个,其中每个 COUNTRY 根据 CITY 值链接到每个 ROAD(如果它们匹配),然后添加我们从每个 ROAD 获得的所有数据。

所以例如从:

List1: ["COUNTRY1", "CITY1"], [...]
List2: ["CITY1", "ROAD1"], [...]
List3: ["ROAD1", "A", "B", "C", "D"], [...]

到:

output: ["COUNTRY1", "CITY1", "ROAD1", "A", "B", "C", "D"]

需要注意的是,每个国家出现多次不同的城市,每个城市出现多次不同的道路,有时多个城市共享同一条道路,但在5字符串的数组列表中,每条道路都是唯一的.

tl;博士:

我需要将所有道路及其数据与它们关联的城市以及与这些城市关联的国家/地区合并。我对 Java 完全陌生,但有人告诉我 Streams 是要走的路,因为我的数据包含几十 GB。

有没有有效的方法来做到这一点?

【问题讨论】:

  • 您的数据需要存储在RDB中
  • 请粘贴您尝试过的代码。
  • 您确定有足够的内存来容纳所有数据吗?你打算用结果做什么?
  • 你可以使用 HashSet 数据结构。它有有用的方法来找到并集、交集或集差。

标签: java arrays string list stream


【解决方案1】:

如果您想继续使用纯 Java,请将您的列表转换为 java.util.Map,并使用国家、城市和道路作为键。然后,您可以执行您口头描述的操作并迭代 List3,例如从上述映射中挑选缺失值。

【讨论】:

  • 但是当每个键在同一个列表中多次出现时,这仍然可能吗?例如,在 list1 中,每个国家/地区都有多个城市,有时同名的城市会出现在不同的国家/地区。
  • 这是 Java 无法为您解决的问题(也无法为任何其他编程语言解决)。如果城市不是唯一的,那么与道路的关系也不是唯一的。您输出的示例意味着您希望将国家与城市与道路联系起来。 List1:["USA", "Paris"], ["France", Paris"] List2:["Paris", "X"], ["Paris", "Y"] 如果您无法分辨 X 是在美国还是在法国,计算机也不能(基于此数据集)
  • 1) Map, 2) Map....相应地遍历或打印。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多