public Class Test{
HashMap<String, HashMap<String, String>> GlobalMap = new HashMap();
private String X;
public static void main(String[] args){
Test t1 = new Test();
t1.read(someTreeObject);
}
@Override
public Void method1(someCtx) {
String A = "some value";
String B = "some other value";
Map Map1 = new HashMap();
Map1.put(A,B);
System.out.println("Local Map : "+Map1.entrySet);
GlobalMap.put(X, (HashMap<String, String>)GlobalMap.get(X).putAll(Map1)); //<<<Compile time error details with the indicator pointing at Map1 within this line: error: incompatible types: void cannot be converted to HashMap<String,String>
// GlobalMap.put(X, (HashMap<String, String>)GlobalMap.get(X).put(new HashMap(A,B))); //<<<<<<<<<This is another approach, when tried gives a compile time error with the indicator pointing at A within this line: error: incompatible types: String cannot be converted to int
System.out.println("Global Map Details : \n"+GlobalMap.entrySet()+"\n");
}
return super.SomeMethod(someCtx);
}
Method1是一种最初可用于抽象接口的重写方法。 我知道我没有希望发送到主方法。
为什么putAll和put方法会产生不同的错误消息? 我真的在这里失踪了什么?
我是编程和Java的新手,并且正在努力学习构建高级HashMaps。在我的经验之前使用泛型HashMap构造时,我没有遇到类似于此错误的任何内容。
答案 0 :(得分:0)
您的错误与putAll
HashMap
方法返回任何内容(无效)的事实有关,因为它只是将地图中的所有映射都复制到另一个映射。
查看更多here。
您可以在外部提取它,然后将地图与复制的元素放在一起。
((HashMap<String, String>)GlobalMap.get(X)).putAll(Map1);
GlobalMap.put(X, (HashMap<String, String>) Map1);
答案 1 :(得分:0)
方法HM2.putAll(HM1)将所有映射从HM1复制到HM2。它不会返回任何东西。所以,在你想要演员之前可能会这样做。
然而,不确定你在代码中想要实现什么 - 通过放置一个get(X)而不将任何东西放入全局映射中,这会在你运行putAll()时导致nullpointer。