我在我的程序中创建 HashTable 时遇到问题,我正在创建 WordLadder 游戏。基本上我希望我的 HashTable 包含唯一单词的键,而值是一个字母差异的单词。问题是,当我打印出来检查我放入的内容时,它会完美地打印出我想要的内容,但是当我返回 HashTable 时,它会让我胡说八道。
我生成 HashTable 的代码如下:
public Hashtable<String, ArrayList<String>> findNeighbors(){
      Hashtable<String, ArrayList<String>> data = new Hashtable<String, ArrayList<String>>();
      ArrayList<String> neighb = new ArrayList<String>();
      for(int i=0; i < 5; i++){
       for(int j=0; j < 5; j++){
        if (isNeighbor(words.get(i), words.get(j))) {
         neighb.add(words.get(j));
        }
       }
       data.put(words.get(i), neighb);
       //System.out.println(words.get(i)+ " "+data.get(words.get(i))); <This Works perfectly fine
       System.out.println(data.toString()); //<This returns nonsense
       neighb.clear();
      }
      return data;
     }
public boolean isNeighbor(String a, String b){
      int diff = 0;
      for (int i = 0; i < a.length(); i++){
       if(a.charAt(i) != b.charAt(i)){
        diff++;
       }
      }
      return diff==1;
     }