首页 > 解决方案 > java:使用引用序列化大型列表

问题描述

我有一个包含 100.000 个元素的列表。这些元素中的每一个都包含一个 Hashmap,其中存储了许多元素。

计算对象之间的依赖关系需要很长时间,所以我想将结果序列化以快速读取。元素是图的节点,哈希图中的元素是它们的邻居和边权重-

在反序列化之后保持对象之间的引用很重要,这意味着 hashmap 中的元素必须与我的 100.000 个元素列表中的对象完全相同。我已经尝试过 java 序列化,但我得到了一个 stackoverflowerror,因为列表有太多的循环引用。我试图在一个额外的步骤中序列化每个元素:

out.writeObject(o);

为列表中的每个元素调用。但是反序列化后,元素中的哈希图为空。

我曾尝试使用休眠将其存储到数据库中,但如果我使用

@org.hibernate.annotations.Type(
        type = "org.hibernate.type.SerializableToBlobType"
 )

我的地图中的元素看起来相同,但都是新对象。

我创建了一个新类,其中包含我的地图中的键和对象,并将其存储在一个额外的数据库表中,但休眠需要永远获取这些。

将反序列化后的对象替换为原始对象也需要很长时间。

是否有人有想法存储此列表以随时快速使用它?我愿意尝试另一种数据格式来存储图表。有什么想法吗?谢谢!

标签: javaserializationgraph

解决方案


推荐阅读