【发布时间】:2016-09-01 04:42:45
【问题描述】:
我是哈希映射的新手,我试图在类的一侧创建一个嵌套的哈希映射并创建另一个类来调用它,所以这是我的代码的样子
public class Hash {
private HashMap<String, HashMap<String, String>> wow = new HashMap<String, HashMap<String, String>>();
public void SetHash(){
wow.put("key", new HashMap<String, Object>());
wow.get("key").put("key2", "val2");
}
public HashMap GetMap(){
return wow;
}
}
在另一个作为主类的类上,它将是这样的:
public static void main(String[] args) {
Hash h = new Hash();
h.SetHash();
System.out.println(h.GetMap.get("key").get("key2"));
}
但是当我放置第二个get时,出现了错误,所以我不确定这是否可能,或者我是否应该将哈希直接放在主类中。
【问题讨论】:
-
您错过了方法调用
GetMap()上的括号。 -
此外,标准命名约定是以方法名称开头,包括带有小写字母的 getter。此外,您不应该在 getter 的返回类型中隐藏类型参数。有一些类型检查编译器不能这样做,如果你不这样做,第二个
get也将不起作用(即使在修复了 Berger 提到的方法调用之后),因为编译器不知道地图的值类型是地图。 -
您还应该避免在表达式右侧重复引用集合的泛型类型。相反,使用像这样的空菱形运算符:
private HashMap<String, HashMap<String, String>> wow = new HashMap<>();
标签: java hash hashmap hashtable