【发布时间】:2018-11-09 10:10:05
【问题描述】:
我有 2 个列表:
List<Map<String, String>> data1 = new ArrayList<>();
Map<String, String> m1 = new HashMap(){};
m1.put("key1","value1")
Map<String, String> m2 = new HashMap(){};
m2.put("key2","value2")
data1.add(m1)
data1.add(m2)
List<Map<String, String>> data2 = new ArrayList<>();
Map<String, String> m22 = new HashMap(){};
m22.put("key2","chavgedValues2")
data2.add(m1)
data2.add(m22)
合并后,我想要包含以下内容的列表:
"key1","value1"
"key2","chavgedValues2"
将这两个列表合并为一个的最佳方法是什么?就像我可以实现迭代器等一样,但我认为应该有一个更简单的选项,比如流。 还应该有一个条件,如果来自 data1 的 Entry.Key 等于来自 data2 的 Entry.Key 而不是只从数据 2 中获取映射。类似于 SQL 连接器的东西。
【问题讨论】:
-
阅读 javadoc docs.oracle.com/javase/7/docs/api/java/util/…。默认情况下会覆盖相同的键
-
要求不够明确,至少对我来说是这样。您能否分享两个此类列表的示例以及您希望为它们获得的结果?
-
你有一个地图列表。您如何决定要合并哪个 data1 映射与哪个 data2 映射?通过列表索引?我将从合并两张地图开始。
-
@Mureinik 我更新了描述
-
为什么有地图列表?如果列表的每个映射都包含唯一的键,则合并每个列表的映射,然后将值从第一个映射覆盖到第一个映射,一个?
标签: java collections java-stream