プログラムで HashTable を作成する際に問題が発生しています。WordLadder ゲームを作成しています。基本的に、HashTableに一意の単語であるキーを含め、値が1文字の違いである単語になるようにします。問題は、何を入れているかを確認するために印刷すると、必要なものが完全に印刷されますが、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;
}