我有一个嵌套地图列表(List
),目标是将列表缩小为一张地图,合并操作如下:如果map1
contains x->{y->10, z->20}
和map2
contains x->{y->20, z->20}
则应将这两个合并到x->{y->30, z->40}
。
我尝试按照以下步骤进行操作,并且效果很好。
import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.function.BinaryOperator; import java.util.stream.Collectors; public class Test { public static void main(String args[]) throws IOException { Map> data1 = new HashMap<>(); Map innerData1 = new HashMap<>(); innerData1.put("a", 10L); innerData1.put("b", 20L); data1.put("x", innerData1); Map innerData2 = new HashMap<>(); innerData2.put("b", 20L); innerData2.put("a", 10L); data1.put("x", innerData1); Map > data2 = new HashMap<>(); data2.put("x", innerData2); List
还有其他更好,有效的方法来解决这个问题吗?
如果嵌套级别大于2,如何做得更干净?假设List类似于,List
并且我们必须将其简化为单个Map
,并假设与上述类似的合并功能。