我目前正在开发一款游戏,我需要为我的 AI 创建一个转置表。我实现Hashtable
了key
Hashtable 是一个正在考虑的状态,它对应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 两次。
保存/恢复数据有什么问题吗?