gpt4 book ai didi

java - LinkedHashMap的合并映射

转载 作者:行者123 更新时间:2023-12-01 23:36:46 28 4
gpt4 key购买 nike

我有两个这种格式的LinkedHashMap的Map==> Map<String,LinkedHashMap<String,String>> m1 和 m2 都有相同的键值,我们如何组合这个 m1 和 m2 并使用所有元素创建 m3。 注意:你能给个伪代码吗?我会实现它。谢谢。

输入如下格式:

m1={1={rollno=1,name=chris,height=7ft},2={rollno=2,name=stephen,height=6ft}}
m2={1={rollno=1,name=chris,weight=65},2={rollno=2,name=stephen,weight=73}}

输出:

     m3={1={rollno=1,name=chris,height=7ft,weight=65},2={rollno=2,name=stephen,height=6ft,weight=73}}

我尝试过:

private static Map<String, LinkedHashMap<String, String>>  mergeMap(Map<String,LinkedHashMap<String, String>> m1, Map<String, LinkedHashMap<String, String>> m2) { 

Map<String,LinkedHashMap<String, String>> newMap = new LinkedHashMap<String, LinkedHashMap<String, String>>(m1);
for (Map.Entry<String, LinkedHashMap<String, String>> entry : m2.entrySet()) {
LinkedHashMap<String, String> t1=newMap.get(entry.getKey());
newMap.putAll(m2);
}

System.out.println("ouput :"+newMap);
return newMap;
}

最佳答案

您可以按照以下步骤合并 map :

  1. 首先创建一个新 map ,传递第一个 map - map1作为参数。您必须使用重载的构造函数 - LinkedHashMap(Map) 为了那个原因。现在您有了一张包含 map1 的所有元素的 map 。 。你的工作已经完成一半了。

    Map<String, Map<String, String>> newMap = new LinkedHashMap<>(map1);
  2. 然后您需要将元素从第二张 map 移动到新 map 。为此,您需要迭代 map2 。您可以使用 Map#entrySet() 迭代 map2 中每个条目的方法。然后您将使用 Map.Entry#getKey() Map.Entry#getValue() 分别获取每个条目的键和值的方法。

    • 对于 map2 中的每个键,从 newMap 获取当前值,并合并 map2 的值,其值为 newMap 。这两个值都是 Map 。您可以使用 Map#putAll() 合并两个 map 的方法。它会自动忽略已经可用的键,并添加额外的键值对。
<小时/>

现在,解决上述问题后,您应该考虑更改数据结构。您应该创建一个类,例如 Person ,存储所有这些属性,并维护 Map<Integer, Person> ,其中键为 rollNo .

你所展示的就是你所拥有的。如果您可以解释一些其他细节,例如您如何以及从哪里获得这些 map ,以及为什么同一个人的属性可能分布在两个不同的 map 中,也许我们可以帮助您更好地正确制定数据结构。如果您有较小的数据集,则可以处理嵌套的 Map,但如果您有较大的数据集,则处理它们将面临困难。您当然应该遵循面向对象的方法。

关于java - LinkedHashMap的合并映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com