我有两个HashMaps
,其中Student
是我创建的对象,其格式为Student(String, String)
static HashMap<String, Student> hashMap = new HashMap<>();
static HashMap<String, HashMap<String, Student>> finalHashMap = new HashMap<>();
我创建了以下Students
并将其添加到hashMap
,firstName
作为Key
Student st1 = new Student("julian", "rogers");
Student st2 = new Student("jason", "Smith");
hashMap.put("julian", st1);
hashMap.put("jason", st2);
然后我将hashMap
添加到finalHashMap
,firstName
的第一个字母为key
finalHashMap.put("j", hashMap);
如何使用键j
?
我尝试创建一个新的hashmap并使用get()
但它没有用。我得到null pointer exception
static HashMap<String, Student> hashMapTemp = new HashMap<>();
hashMapTemp.putAll(finalHashMap.get('j'));
for (String key : hashMapTemp.keySet())
{
System.out.println(key + " " + hashMapTemp.get(key));
}
输出
java.lang.NullPointerException
at java.util.HashMap.putAll(Unknown Source)
注意:我尝试使用put()
并且也遇到了同样的错误。
答案 0 :(得分:2)
hashMapTemp.putAll(finalHashMap.get('j'));
我认为这应该是:
hashMapTemp.putAll(finalHashMap.get("j"));
finalHashMap
中的密钥是字符串,而不是字符。
答案 1 :(得分:0)
hashMapTemp.putAll(finalHashMap.get('j'));
这一行很奇怪,你找一个字符而不是一个字符串(正如你所定义的那样)。
考虑使用static HashMap<Character, Student> finalHashMap = new HashMap<>()
答案 2 :(得分:-1)
public static HashMap<String, Student> find(String key, HashMap<String, HashMap<String, Student>> dataMap) {
HashMap<String, Student> result = null;
for (String s : dataMap.keySet()) {
if (s.equalsIgnoreCase(key)) {
result = dataMap.get(s);
break;
}
}
return result;
}
然后只需调用这个方法:
HashMap<String, Student> result = find("j", finalHashMap);