加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java:版本化的数据结构?

发布时间:2020-12-14 16:45:33 所属栏目:Java 来源:网络整理
导读:我有一个非常简单的数据结构(基本上是一个包含一些数组和单个值的结构),但是我需要记录数据结构的历史记录,以便我可以在任何时候有效地获取数据结构的内容. 有没有一个比较直接的方法呢? 我可以想到的最好的方法是通过在functional data structures中存储数
我有一个非常简单的数据结构(基本上是一个包含一些数组和单个值的结构),但是我需要记录数据结构的历史记录,以便我可以在任何时候有效地获取数据结构的内容.

有没有一个比较直接的方法呢?

我可以想到的最好的方法是通过在functional data structures中存储数据来处理所有突变操作的整个数据结构,然后对于每个变异操作,在由时间排序索引的Map中缓存数据结构的副本(例如,具有实时密钥的TreeMap或具有突变操作的计数器的HashMap与存储在TreeMaps中的一个或多个索引相结合实时/刻度计数等到突变操作)

有什么建议么?

编辑:在一种情况下,我已经将历史记录作为一系列事务(这是从数据文件读取项目),所以我可以重播它们,但是这需要每次需要O(n)个步骤(n =#个事务)访问数据.我正在寻找替代品.

解决方法

您应该使用一些不变的永久性数据结构,并且基于结构共享(即,使数据结构的不在版本之间的部分仅存储一次).

我在这里创建了一个这样的数据结构的开源Java库:

http://code.google.com/p/mikeralib/source/browse/#svn/trunk/Mikera/src/mikera/persistent

这些有些灵感来自Clojure持久的数据结构,这也可能适合您的目的(它们也用Java编写).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读