0
我想要一個固定大小的字典。我正在爲它添加高頻率的元素。但我希望它用先前的更高優先級替換新的元素。 任何幫助將受到高度的歡迎。具有替代優先級的固定大小字典
我想要一個固定大小的字典。我正在爲它添加高頻率的元素。但我希望它用先前的更高優先級替換新的元素。 任何幫助將受到高度的歡迎。具有替代優先級的固定大小字典
我想現在你不需要解決辦法,但你總是可以創建一個從IDictionary中繼承一個類並重寫它的添加方法,以防止字典從增長超過特定大小這樣
東西
class LimitedSizeDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
Dictionary<TKey, TValue> dict;
Queue<TKey> queue;
int size;
public LimitedSizeDictionary(int size)
{
this.size = size;
dict = new Dictionary<TKey, TValue>(size + 1);
queue = new Queue<TKey>(size);
}
public void Add(TKey key, TValue value)
{
dict.Add(key, value);
if (queue.Count == size)
dict.Remove(queue.Dequeue());
queue.Enqueue(key);
}
public bool Remove(TKey key)
{
if (dict.Remove(key))
{
Queue<TKey> newQueue = new Queue<TKey>(size);
foreach (TKey item in queue)
if (!dict.Comparer.Equals(item, key))
newQueue.Enqueue(item);
queue = newQueue;
return true;
}
else
return false;
}
}
您描述的數據結構不是字典 - 它是固定長度隊列。 – MarcinJuraszek
@MarcinJuraszek:但我需要添加一對鑰匙,價值它,以後可以通過值檢索 – Masoud
我需要的結構是一個哈希,但具有良好的替代策略 – Masoud