我需要一个动态的数据结构(添加/删除) 这对于
是最有效的serializer.error
.Contains()
两个动作的调用频率均高于(添加/删除)
目前,我最好的选择是Iteration
。
我现在正在考虑创建一个自定义数据结构Dictionary<T,T>
,该结构包含一个Cache<T>
并实现Dictionary<T,T>
这是有效的还是有一种更符合现有库的方法?
答案 0 :(得分:2)
如@Ross Gurbutt的评论中所述,HashSet满足您的要求。但是,它不会保持插入项目的顺序(或者更准确地说,可能 。请参阅Jon Skeet的this回答)。
如果订单的忠诚度对您很重要,那么SortedSet可能就是您想要的。
编辑:以上建议是在您不希望集合中包含重复项的前提下进行的。
此外,正如@Ross Gurbutt所指出的(我应该早先提到的那样):
SortedSet.Contains为O(log n),而HashSet.Contains为O(1)
答案 1 :(得分:0)
您可以使用多个数据结构。
使用HashSet
获取对任何元素的O(1)访问时间。
使用List<>
按索引或列表的末尾添加/删除项目:O(1)。
该List
也可以通过二进制搜索来搜索(如果已排序):O(log(n))。如果未排序,则该搜索为线性O(n)。
迭代就是迭代:在您的List
上,总是O(n)...