当前位置: 首页 > 知识库问答 >
问题:

在Java中加载序列化hashmap的最快方法是什么?

周伟泽
2023-03-14

我已经使用objectstream和fileoutputstream将HashMap序列化为一个文件。这是一个非常庞大的HashMap,大约有1.5亿条条目。当我从文件中读回它时,加载它需要很长时间(~40分钟)。

我使用FileOutputStream后跟ObjectOutputStream来序列化对象。然后,我使用ObjectInputStream和FileInputStream读取对象。

有没有推荐的方法来读取序列化的HashMap,以便它从文件中快速加载?

共有1个答案

逑翰翮
2023-03-14

使用BufferedInputStream可以提高性能

ObjectInputStream in = 
    new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

当然,BufferedOutputStream也会提高序列化的性能。

使用这些缓冲流可以一次性从文件系统读取大块字节,而不是逐字节读取。有关更多信息,请阅读文档。

 类似资料:
  • 问题内容: 当我将WCF配置为使用jSON序列化并将DataTable包含在我的一个DataContracts中时,它会先将DataTable序列化为XML,然后再将整个DataContract序列化为jSON。我希望将DataTable序列化为jSON,而不是XML。 我的问题是: 为什么首先将DataTable序列化为XML? 我如何才能将其序列化到jSON? 问题答案: DataTable是

  • 问题内容: 我可以访问一组文件(每个文件约80-800mb)。不幸的是,每个文件中只有一行。该行仅包含一个JSON对象(列表列表)。加载并将其解析为较小的JSON对象的最佳方法是什么? 问题答案: 这是他们提出的解决方案:

  • 将单个(或几个)宽行从Cassandra加载到C#的最高效的性能方法是什么?我的宽行有10.000-10.000列。主键由几个值组成,但是列键是一个字符串,列值是一个计数器(请参见下面的模式)。

  • 问题内容: 我之前已经找到了解决方案,但是我想知道最快的解决方案是将包含其他任意长度列表的列表展平。 例如: 会成为: 可以有无限多个级别。一些列表对象可以是字符串,在输出列表中不得将其展平为它们的顺序字符。 问题答案: 这是一种字符串友好的递归方法: 返回: 请注意,这并不能保证速度或开销的使用,但是说明了一种递归解决方案,希望会对您有所帮助。

  • 本文向大家介绍Java中的序列化是什么?,包括了Java中的序列化是什么?的使用技巧和注意事项,需要的朋友参考一下 Java提供了一种称为对象序列化的机制,该机制可以将对象表示为字节序列,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息。 示例

  • 我需要用大量的整数值预先填充列表。 除了迭代,还有更快的方法吗? 当前代码: 此代码位于一个非常频繁创建的类的构造函数中,因此我希望它尽可能高效(read:性能而不是代码行)