如何在 Java 中将一个地图放置到另一个地图中

How to place a Map into another Map in Java

我正在做一个个人项目。

经过很多地图,我来到了要在另一个地图中输入一个地图的地步...让我解释得更好。

我有这张地图atPropostas,里面有一个人的信息,但是在程序的某个时候,我想给那个人添加一个boss email

private Map<String, Long> atPropostas;
private Map<String,Map<String,Long>> atOrientadores;

要添加 boss email,我已经这样做了:

for (Map.Entry<String, Long> atprop : atPropostas.entrySet()) {
    for (Map.Entry<String, Proposta> prop : propostas.entrySet()) {
        if (prop.getValue().getTipo().equals("T2") && propostas.containsKey(atprop.getKey())) {
            atOrientadores.put(prop.getValue().getEmailDocente(), atprop);
        }
    }
}

但是,atprop 值,在 atOrientadores.put() 内部会产生错误:

java: incompatible types: java.util.Map.Entry<java.lang.String,java.lang.Long> cannot be

converted to java.util.Map<java.lang.String,java.lang.Long>

我试过投atprop:

 atOrientadores.put(prop.getValue().getEmailDocente(), (Map<String, Long>) atprop);

编译器错误消失,但应用程序本身无法运行。

您无法通过转换将 Map.Entry 转换为 Map

Mapentry代表了本质上不同的概念。 地图条目组成,它不是条目

您可以使用 Java 9

中可用的静态方法 Map.ofEntries() 创建 单项地图
atOrientadores.put(prop.getValue().getEmailDocente(), Map.ofEntries(atprop));

旁注:强烈建议在应用程序中为变量、类 等命名时使用英语。它使您更容易推理您的代码。

我不确定 atprop 代表什么,但你提到了一个 和一个 电子邮件 。我建议您考虑创建 对应于 personemail而不是使代码复杂化并处理 嵌套映射 .