如何在 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
。
Map和entry代表了本质上不同的概念。 地图由条目组成,它不是条目。
您可以使用 Java 9
中可用的静态方法 Map.ofEntries()
创建 单项地图
atOrientadores.put(prop.getValue().getEmailDocente(), Map.ofEntries(atprop));
旁注:强烈建议在应用程序中为变量、类 等命名时使用英语。它使您更容易推理您的代码。
我不确定 atprop
代表什么,但你提到了一个 人 和一个 电子邮件 。我建议您考虑创建 类 对应于 person 和 email而不是使代码复杂化并处理 嵌套映射 .
我正在做一个个人项目。
经过很多地图,我来到了要在另一个地图中输入一个地图的地步...让我解释得更好。
我有这张地图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
。
Map和entry代表了本质上不同的概念。 地图由条目组成,它不是条目。
您可以使用 Java 9
中可用的静态方法Map.ofEntries()
创建 单项地图
atOrientadores.put(prop.getValue().getEmailDocente(), Map.ofEntries(atprop));
旁注:强烈建议在应用程序中为变量、类 等命名时使用英语。它使您更容易推理您的代码。
我不确定 atprop
代表什么,但你提到了一个 人 和一个 电子邮件 。我建议您考虑创建 类 对应于 person 和 email而不是使代码复杂化并处理 嵌套映射 .