File 如何从文件中保存和检索哈希表?

File 如何从文件中保存和检索哈希表?,file,input,save,hashtable,File,Input,Save,Hashtable,我创建了一个程序,可以计算一些东西并将信息存储到哈希表中。我希望它下次运行时恢复存储在哈希表中的以前的值并恢复。所以我问如何将对象保存到文件中 在我的代码中,我使用FileInputStream和FileOutputStream。到目前为止,这里是我的代码的一小部分: @SuppressWarnings("unchecked") private void obtainSaveFile(){ String file = new String("./saveFile.txt"); t

我创建了一个程序,可以计算一些东西并将信息存储到哈希表中。我希望它下次运行时恢复存储在哈希表中的以前的值并恢复。所以我问如何将对象保存到文件中

在我的代码中,我使用FileInputStream和FileOutputStream。到目前为止,这里是我的代码的一小部分:

@SuppressWarnings("unchecked")
private void obtainSaveFile(){
    String file = new String("./saveFile.txt");
    try{
        //Create the file if it doesn't exist
        if( !( (new File(file)).exists() ) ){

            //Create new empty file
            (new File(file)).createNewFile();

            //Creates a fresh new hashTable
            hashTable = new QuadraticProbingHashTable<TicTacToeBoard>();
        }
        else{
            //Obtain the hashTables saved config.txt file
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);

            //Obtain the previously saved hashTable
            //-----------------------------------
            //This line of code gives me an error
            //-----------------------------------
            hashTable = (QuadraticProbingHashTable<TicTacToeBoard>)ois.readObject();
            ois.close();
        }

        //Create save file configs.txt
        FileOutputStream fos = new FileOutputStream(file);
        saveFile = new ObjectOutputStream(fos);     

    }catch(Exception e){
        e.printStackTrace();

        //Creates a fresh new hashTable
        //This line of code gives me an error
        hashTable = new QuadraticProbingHashTable<TicTacToeBoard>();
    }
}

好吧,问题似乎是,您正在尝试序列化一些没有实现可序列化的东西。 你可以在这里看到:

java.io.NotSerializableException: proj4.QuadraticProbingHashTable$HashEntry
你有两个选择:

  • 如果可能的话,可以让HashEntry实现序列化
  • 您将其标记为瞬态,这样它就不会被序列化(可能不是您想要的)

  • 有关更多详细信息,您可以发布该类。

    问题似乎是,您正在尝试序列化一些未实现可序列化的内容。 你可以在这里看到:

    java.io.NotSerializableException: proj4.QuadraticProbingHashTable$HashEntry
    
    你有两个选择:

  • 如果可能的话,可以让HashEntry实现序列化
  • 您将其标记为瞬态,这样它就不会被序列化(可能不是您想要的)

  • 有关更多详细信息,您可以发布该类。

    问题是,即使您的表可以序列化,但您已经向哈希表添加了一个不可序列化的键或值。所有对象都可以放入哈希表,但并非所有对象都可以序列化。您要将什么类型的对象放入哈希表?

    问题是,即使您的表可以序列化,您也向哈希表添加了一个不可序列化的键或值。所有对象都可以放入哈希表,但并非所有对象都可以序列化。您正在将什么类型的对象放入哈希表?

    我正在将我创建的类放入哈希表的TictoeBoard对象放入哈希表。它仍然给了我同样的错误。你能发布TictoeBoard的代码吗?这将有助于我们确定为什么你说的没有成功。我忘了修复一些调整。我正在将我创建的类放入哈希表中的TictoeBoard对象。它仍然给了我同样的错误。你能发布TictoeBoard的代码吗?这将有助于我们确定为什么你说的没有成功。有几个地方我忘了修正。