【问题标题】:How to add data and iterate Map of maps (Nested map) in Java?如何在Java中添加数据和迭代地图(嵌套地图)?
【发布时间】:2022-01-21 09:35:26
【问题描述】:

使用 Java8/集合/ 我想在集合中的地图中添加数据: Map<String,Map<String,Double>> OuterMap=new LinkedHashMap<String,Map<String,Double>>();

内图:

Map<String,Double> InnerMap=new LinkedHashMap<String,Double>();

OuterMap.put("Str1",InnerMap);
OuterMap.put("Str2",InnerMap);

问题是我想检查 InnerMap 的键,它在 InnerMap 中可能会有所不同。

当我比较 InnerMap 的键时。 OuterMap 会覆盖地图的先前元素。

我想要这样的输出: Str1={"SNP1"=0.3,"SNP2"=0.56,"SNP3"="0.76"} , Str2={"SNP1"="0.16","SNP2"=0.56,"SNP3"=0.78,"SNP4"=.56}

【问题讨论】:

  • 不要使用同一个对象作为多个外部映射键的值?
  • 正如@Shawn 所说,或者更清楚地说,每个内部映射都必须是 LinkedHashMap 的全新实例,否则您只是在各处引用同一个映射。

标签: java collections java-8


【解决方案1】:

您应该在存储值时创建新的地图实例。

创建地图副本的最简单方法是使用appropriate copy constructor

Map<String,Double> innerMap=new LinkedHashMap<>();

outerMap.put("Str1", innerMap);
outerMap.put("Str2", new LinkedHashMap<>(innerMap));

还请确保遵守 Java 命名约定:camelCase 用于变量/字段/方法,UpperCamelCase 用于类/接口/枚举。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 2020-12-09
    • 1970-01-01
    • 2023-01-19
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多