下面是我需要的数据结构的描述,我想使用不可变的数据结构来实现它。我试图确定...是否有一个现有的数据结构可以支持我在这里尝试做的事情,或者我是否需要创建一个数据结构——如果我需要创建它,什么是好的从哪里开始(构建块)?
我有稳定的某种类型的传入值流。我想将它们添加到持久/不可变的数据结构中以保存它们的历史记录,并且在每次添加时,它将查看历史记录并确定是否将删除一个或多个最旧的项目(例如,如果历史记录>a一定的长度或值具有一定的属性)。
在不了解您的更多要求的情况下,我只想说香草Set<'a>
做得绰绰有余。我更喜欢“集合”而不是“列表”,这样您始终可以 O(lg n) 访问最大和最小的项目,从而允许您通过插入日期/时间来订购集合,以便有效地访问最新和最旧的项目。
似乎很容易包装一个集合,以便其添加/删除方法调用您的回调:
type AwesomeSet(internalSet : Set<'a>, insertCallback : 'a -> unit, removeCallback : 'a -> unit) =
member this.Add(x) =
insertCallback(x)
AwesomeSet(internalSet.Add x, insertCallback, removeCallback)
member this.Remove(x) =
removeCallback(x)
AwesomeSet(internalSet.Remove x, insertCallback, removeCallback)
member this.Count = internalSet.Count
member this.Min = internalSet.MinimumElement
member this.Max = internalSet.MaximumElement
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)