【发布时间】:2013-03-29 14:06:23
【问题描述】:
我已使用 objectstream 和 fileoutputstream 将 HashMap 序列化为文件。这是一个非常庞大的 HashMap,大约有 1.5 亿个条目。当我从文件中读回它时,加载需要很长时间(约 40 分钟)。
我使用 FileOutputStream 后跟 ObjectOutputStream 来序列化对象。然后,我使用 ObjectInputStream 和 FileInputStream 来读取对象。
是否有推荐的方法来读取序列化的 HashMap 以便从文件中快速加载?
【问题讨论】:
-
是的,使用数据库代替 HashMap。 SQLite、Postgres、MySQL 提供持久性和查询。
-
您也可以在序列化之前使用
GZIPOutputStream压缩数据,这样文件会更小,写入/读取时间更短:mkyong.com/java/how-to-compress-serialized-object-into-file,docs.oracle.com/javase/7/docs/api/java/util/zip/…。 -
你为什么不告诉我们你是怎么做的?你至少在使用 BufferedInputStream 吗?
-
我编辑了我的问题,提到了我用来序列化和反序列化 hashmap 的组件。
-
您是仅保存 HashMap+内容(作为一个)还是仅保存其内容?