2014-01-30 79 views
1

我需要一個Sorted列表,但是當我從列表中刪除一個項目後,我需要在將新項目添加到列表之前調整其他項目的鍵值。Changeed Key for SortedList

您不允許更改「SortedList」中項目的密鑰。

什麼工具最適合做這件事。

實施例代碼

timedEvQue.Add(3, "First"); 
    timedEvQue.Add(7, "Second"); 
    timedEvQue.Add(9, "Third"); 
    int decAmnt = (int)timedEvQue.Keys[0]; 
    timedEvQue.RemoveAt(0); 

    for (int i = 0; i < timedEvQue.Count; ++i) 
    { 
    timedEvQue.Keys[i] = timedEvQue.Keys[i] - decAmnt; //runtime error here 
    } 

    timedEvQue.Add(5, "Forth"); 

回答

2

沒有通常對於字典/哈希映射類型的數據結構的改變的鍵操作,因爲它們將基本上只是刪除並重新添加的項。所以,只需刪除並添加項目。

timedEvQue.Add(3, "First"); 
timedEvQue.Add(7, "Second"); 
timedEvQue.Add(9, "Third"); 
int decAmnt = (int)timedEvQue.Keys[0]; 
timedEvQue.RemoveAt(0); 

for (int i = 0; i < timedEvQue.Count; ++i) 
{ 
    int oldKey = timedEvQue.Keys[i]; 
    string val = timedEvQue[oldKey]; 
    int newKey = oldKey - decAmnt; 
    timedEvQue.Remove(oldKey); 
    timedEvQue.Add(newKey, val); 
} 

timedEvQue.Add(5, "Forth"); 
+0

會有很多物品,我恐怕會減慢它的速度。 – runfastman

+0

我懷疑'SortedList'可能不是你想要的正確答案。我寫了一篇關於.NET數據結構運行時間的博客文章,您可能會發現它有幫助。我建議你檢查一下,如果你仍然在努力提出另一個問題來概述問題,以及你需要什麼樣的操作來快速使用數據結構。 http://www.growingwiththeweb.com/2013/02/what-data-structure-net-collections-use.html –

+0

我不會查找很多項目,因此查找速度並不像問題那麼重要。但是,擁有多個密鑰會很好。是否有更好的方法可以改變關鍵值和多個關鍵? – runfastman