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中,所以我真的不明白这个空指针异常的原因。我真的很感激任何帮助。 非常感谢!

currentArrayList<String>,而地图 visitedMap 中的键是 String 对象。因此,visitedMap.get(current) 将始终 return null.

您可能想使用:visitedMap.get(z) 而不是 visitedMap.get(current)