gpt4 book ai didi

c# - 带条目限制的字典

转载 作者:可可西里 更新时间:2023-11-01 08:36:26 26 4
gpt4 key购买 nike

我需要提供对跨 session 的所有用户持续存在的键/值对存储的访问权限。

我可以很容易地为此创建一个单例,但出于性能原因,我想将字典的大小限制为 10000 个项目(或任何性能数字,因为该对象将无限期存在)

是否有一种字典形式,我可以在其中指定存储对象数量的限制,并在超过该限制时删除最旧的条目?

最佳答案

没有这样的内置词典,但您可以构建自己的词典。您将需要一个 key 队列 - 这将使您能够快速找到最旧的条目并将其删除。此外,您还需要一个简单的字典来保存您的值 - 这将使您能够快速搜索它们:

public class SuperDictionary<TKey, TValue>
{
private Dictionary<TKey, TValue> dictionary;
private Queue<TKey> keys;
private int capacity;

public SuperDictionary(int capacity)
{
this.keys = new Queue<TKey>(capacity);
this.capacity = capacity;
this.dictionary = new Dictionary<TKey, TValue>(capacity);
}

public void Add(TKey key, TValue value)
{
if (dictionary.Count == capacity)
{
var oldestKey = keys.Dequeue();
dictionary.Remove(oldestKey);
}

dictionary.Add(key, value);
keys.Enqueue(key);
}

public TValue this[TKey key]
{
get { return dictionary[key]; }
}
}

注意:您可以实现 IDictionary<TKey,TValue>接口(interface),使此类成为“真正的”字典。

关于c# - 带条目限制的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com