如何在硬盘上存储对象?

时间:2013-03-11 15:08:22

标签: java eclipse serialization hard-drive object-serialization

我正在开发一个项目,该项目使用了几张可以拥有100,000多个密钥的地图。目前我正在使用缩写形式的数据在每个运行时创建地图以节省时间,以便地图只有大约1,000个键。但我想用我可用的全部数据进行测试。

我想知道如何在类中创建地图,然后将该对象保存到硬盘驱动器,然后能够在不同的类中引用该对象,这样我就不需要每次创建和填充地图我测试了这门课。我正在使用Eclipse编写Java类。

编辑:我相信它被称为对象序列化,但如果它被序列化,我必须在使用前阅读整个地图吗?或者它实际上是否与调用局部变量相同?

3 个答案:

答案 0 :(得分:0)

我有类似的问题。首先我使用了HSQLDB。之后我检查了EHCache。而且它有所不同 - 工作得更快,更容易理解。

您还可以查看NOSQL页面,“Key Value / Tuple Store”段落。肯定会找到适合你的东西。

答案 1 :(得分:0)

如果您的地图包含可序列化的对象,那么您可以使用serailization直接将地图写入磁盘。例如:String,Integer的地图

但是,如果您的地图包含您创建的任何自定义类,则必须通过实现Serializable interface使您的类可序列化。

您可以通过覆盖用于写入的writeObject(ObjectOutputStream)和用于读回类内容的readObject(ObjectInputStream ois)来显式决定使用序列化将类写入磁盘的方式。

当序列化和反序列化发生时,将隐式调用这些方法,即writeObject()和readObject()。在实现这些方法时要小心,因为您必须以与写入相同的顺序读回元素。

示例如何实现这些方法:Sample example

答案 2 :(得分:0)

我前段时间遇到过类似的问题。我使用Berkeley DB,它非常完美。如果你问我,这是一个很好的选择: http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/index.html