更改SortedList的密钥

时间:2014-01-30 22:28:24

标签: c# sortedlist

我需要一个Sorted列表,但是在我从列表中删除一个项目后,我需要在将新项目添加到列表之前调整其他项目的键。

不允许更改“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");

1 个答案:

答案 0 :(得分: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");