Java 哈希映射错误
Java HashMap Error
我正在解决一个问题,我得到了一张地图(称为 myMap
),其中键是作者的姓名,值是作者已发表的合著者的姓名文章与。我必须创建一个方法,该方法 returns 一个字符串数组,其中包含名为 ERDOS 的特定作者与其他作者之间的分离度。我已经编写了下面的代码来这样做;我正在使用广度优先搜索。
HashMap<String,Boolean> visitedMap= new HashMap<String,Boolean>();
HashMap<String,Integer> distanceMap=new HashMap<String,Integer>();
for(String name: myMap.keySet()){
visitedMap.put(name, false);
}
for(String name:myMap.keySet()){
distanceMap.put(name, -1);
}
distanceMap.put("ERDOS", 0);
Queue<String> q= new LinkedList();
q.add("ERDOS");
visitedMap.put("ERDOS", true);
int i=0;
while(!q.isEmpty()){
String a = q.remove();
i=i+1;
ArrayList<String> current= myMap.get(a);
for(String z:current){
System.out.println(current);
System.out.println(visitedMap);
if(visitedMap.get(current)==true){
q.add(z);
distanceMap.put(z, i);
visitedMap.put(z,true);
}
else{
break;
}
}
}
ArrayList<String> answer= new ArrayList<String>();
for(String y:distanceMap.keySet()){
answer.add("y"+" "+Integer.toString(distanceMap.get(y)));
}
String[] realAnswer= answer.toArray(new String[answer.size()]);
Arrays.sort(realAnswer);
return realAnswer;
}
但是,当我调用 (visitedMap.get(current)==true) 时,我总是收到空指针错误。这行前面的两个打印语句表明current肯定存在于visitedMap中,所以我真的不明白这个空指针异常的原因。我真的很感激任何帮助。
非常感谢!
current
是 ArrayList<String>
,而地图 visitedMap
中的键是 String
对象。因此,visitedMap.get(current)
将始终 return null
.
您可能想使用:visitedMap.get(z)
而不是 visitedMap.get(current)
。
我正在解决一个问题,我得到了一张地图(称为 myMap
),其中键是作者的姓名,值是作者已发表的合著者的姓名文章与。我必须创建一个方法,该方法 returns 一个字符串数组,其中包含名为 ERDOS 的特定作者与其他作者之间的分离度。我已经编写了下面的代码来这样做;我正在使用广度优先搜索。
HashMap<String,Boolean> visitedMap= new HashMap<String,Boolean>();
HashMap<String,Integer> distanceMap=new HashMap<String,Integer>();
for(String name: myMap.keySet()){
visitedMap.put(name, false);
}
for(String name:myMap.keySet()){
distanceMap.put(name, -1);
}
distanceMap.put("ERDOS", 0);
Queue<String> q= new LinkedList();
q.add("ERDOS");
visitedMap.put("ERDOS", true);
int i=0;
while(!q.isEmpty()){
String a = q.remove();
i=i+1;
ArrayList<String> current= myMap.get(a);
for(String z:current){
System.out.println(current);
System.out.println(visitedMap);
if(visitedMap.get(current)==true){
q.add(z);
distanceMap.put(z, i);
visitedMap.put(z,true);
}
else{
break;
}
}
}
ArrayList<String> answer= new ArrayList<String>();
for(String y:distanceMap.keySet()){
answer.add("y"+" "+Integer.toString(distanceMap.get(y)));
}
String[] realAnswer= answer.toArray(new String[answer.size()]);
Arrays.sort(realAnswer);
return realAnswer;
}
但是,当我调用 (visitedMap.get(current)==true) 时,我总是收到空指针错误。这行前面的两个打印语句表明current肯定存在于visitedMap中,所以我真的不明白这个空指针异常的原因。我真的很感激任何帮助。 非常感谢!
current
是 ArrayList<String>
,而地图 visitedMap
中的键是 String
对象。因此,visitedMap.get(current)
将始终 return null
.
您可能想使用:visitedMap.get(z)
而不是 visitedMap.get(current)
。