7

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

我想知道如何在一个类中创建一个映射,然后将该对象保存到硬盘驱动器,然后能够在不同的类中引用该对象,这样我每次测试时都不需要创建和填充映射班级。我正在使用 Eclipse 用 Ja​​va 编写类。

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

4

3 回答 3

1

如果您的地图包含可序列化的对象,那么您可以使用序列化直接将地图写入磁盘。例如:字符串、整数的映射

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

您可以通过重写 writeObject(ObjectOutputStream s) 进行写入和 readObject(ObjectInputStream ois) 读取类的内容来明确决定使用序列化将类写入磁盘的方式。

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

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

于 2013-03-11T16:30:38.787 回答
1

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

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

于 2013-03-11T15:18:02.737 回答
0

前段时间我遇到了类似的问题。我使用了 Berkeley DB,它非常适合。如果您问我,这是一个不错的选择:http: //docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/index.html

于 2013-03-11T16:37:40.920 回答