我有一个非常简单的数据结构(基本上是一个包含一些数组和单个值的结构),但我需要记录数据结构的历史记录,以便我可以在任何时间点有效地获取数据结构的内容。
有没有相对简单的方法来做到这一点?
我能想到的最好的方法是将整个数据结构封装为通过将数据存储在中来处理所有变异操作的东西函数式数据结构 https://stackoverflow.com/questions/1683430/functional-data-structures-in-java,然后对于每个突变操作,在按时间排序索引的 Map 中缓存数据结构的副本(例如,以实时为键的 TreeMap,或者具有突变操作计数器与存储在 TreeMap 中的一个或多个索引的 HashMap将实时/滴答计数/等映射到突变操作)
有什么建议么?
edit:在一种情况下,我已经将历史记录作为一系列事务(这是从数据文件中读取项目),因此我可以重播它们,但这需要 O(n) 步骤(n = 事务数)每次我需要访问数据。我正在寻找替代方案。
你是对的。将数据存储在纯函数数据结构中是正确的方法。使用 do/undo 操作支持任何中等复杂的操作依赖于程序员了解每个操作的所有副作用,这不会扩展并破坏封装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)