java - java:使用引用序列化大型列表
问题描述
我有一个包含 100.000 个元素的列表。这些元素中的每一个都包含一个 Hashmap,其中存储了许多元素。
计算对象之间的依赖关系需要很长时间,所以我想将结果序列化以快速读取。元素是图的节点,哈希图中的元素是它们的邻居和边权重-
在反序列化之后保持对象之间的引用很重要,这意味着 hashmap 中的元素必须与我的 100.000 个元素列表中的对象完全相同。我已经尝试过 java 序列化,但我得到了一个 stackoverflowerror,因为列表有太多的循环引用。我试图在一个额外的步骤中序列化每个元素:
out.writeObject(o);
为列表中的每个元素调用。但是反序列化后,元素中的哈希图为空。
我曾尝试使用休眠将其存储到数据库中,但如果我使用
@org.hibernate.annotations.Type(
type = "org.hibernate.type.SerializableToBlobType"
)
我的地图中的元素看起来相同,但都是新对象。
我创建了一个新类,其中包含我的地图中的键和对象,并将其存储在一个额外的数据库表中,但休眠需要永远获取这些。
将反序列化后的对象替换为原始对象也需要很长时间。
是否有人有想法存储此列表以随时快速使用它?我愿意尝试另一种数据格式来存储图表。有什么想法吗?谢谢!
解决方案
推荐阅读
- python - 在 XML 中查找和替换 CDATA 属性值 - Python
- ios - React Native Push Notifications,FCM 说令牌仅在 iOS 上无效(Android 有效)
- sql - 从两个连接表返回统计信息
- regex - 正则表达式匹配直到逗号
- authentication - Blazor Server Signalr 集线器缺少用户声明
- python - Spyder 4.2.1 (Anaconda 1.10.0) 中缺少依赖项
- google-apps-script - 谷歌表格继续编辑如果 - 继续编辑如果不是
- ios - 为什么我要outlet所有的标签来本地化,object id的作用是什么
- java - 在java中对文本文件行进行排序
- sorting - 如何在不过滤的情况下将包含数据的行始终保留在电子表格的顶部