Java 如何将两个列表合并/更新为一个

Java 如何将两个列表合并/更新为一个,java,collections,java-stream,Java,Collections,Java Stream,我有两份清单: 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(

我有两份清单:

        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)
将这两个列表合并为一个列表的最佳方式是什么?我可以实现迭代器,但我认为应该有一个更简单的选择,比如流。 还应该有一个条件,即如果来自数据1的Entry.Key等于来自数据2的Entry.Key,则只从数据2获取映射。类似于SQLJoiner的东西

data1.addAll(data2);
这是最简单的方法,但是如果两个或多个映射中存在相同的键,则不能执行条件检查


所以我会用迭代器和循环手动完成。我看不出stream函数会使它变得更简单。

阅读javadoc。相同的键将被默认值覆盖。至少对我来说,要求不够明确。你能分享两个这样的列表的例子以及你想要得到的结果吗?你有一个地图列表。如何决定要将哪个data1映射与哪个data2映射合并?按列表索引?我会从合并两张地图开始。@Mureinik我已经更新了描述为什么有地图列表?如果列表的每个映射包含唯一的键,则合并每个列表的映射,然后将值从第一个映射覆盖到一个,一个?
data1.addAll(data2);