私は現在、AI の転置テーブルを作成する必要があるゲームに取り組んでいます。Hashtable への が検討中の状態であり、それに対応することが最適な次の手にHashtable
なるように実装しました。key
value
しかし、Hashtable を Android の内部ストレージに保存して、次に復元すると、データが保存されているように見えますが、 (つまり、ゲームの状態) は、以前のインスタンスで保存したものとkeys
は異なります。keys
データを保存して復元する方法は次のとおりです。
private void readTranspositionTableFromFile() {
FileInputStream fis = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(fis);
transpositionTable = (Hashtable<BoardState, NextMove>) ois.readObject();
ois.close();
deleteFile(FILENAME);
}
private void writeTranspositionTableToFile() {
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(transpositionTable);
oos.close();
}
hashCode()
同じ状態に対して同じ値を何度も返し続けるため、実装に問題はありません。
転置テーブルを保存/復元すると、データが台無しになると思われます。これは、2 つのランタイムをログに記録し、最初のランタイムでhashCode()
、テーブルに追加される 2 つの状態に対して 3964 と 3029 を返さなければならなかったためです。ただし、ファイルからテーブルを読み取るときに、hashCode()
9119 が 2 回返されました。
データの保存・復元に問題はありませんか?