我想建立一个字典(键,值),
但我希望这本词典的大小有限,
例如1000个条目,
因此,当我增加此限制大小时,我想删除第一个元素并添加一个新元素(FIFO)。
我想使用字典,因为我一直在搜索字典中的键(我需要它会很快)
这该怎么做?
最佳答案
要同时获得字典和LIFO/FIFO行为(用于删除最新/最旧的条目),可以使用OrderedDictionary
。参见http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx。
为了方便使用,您可以按照@ArsenMkrt建议的方式,从OrderedDictionary
派生您自己的类。
但是请注意,OrderedDictionary
不使用泛型,因此由于装箱而导致效率低下(字典中的项目将作为object
插入)。克服此问题的唯一方法是创建一个双重数据结构,该字典中的所有项都将镜像为Queue
(对于FIFO)或Stack
(对于LIFO)。有关详细信息,请参见下面的SO问题的“Qua”答案,该问题恰好处理了您需要一种有效方法来跟踪插入字典项的顺序的情况。
Fastest and most efficient collection type in C#
关于C#有限词典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5814213/