我需要存储节点集合:
class Node
{
int Value;
//other info
}
我有三个要求:
- 需要能够有效地检索集合中具有最低值的节点
- 需要能够高效地将节点插入到集合中
- 两个节点可以有相同的值
我认为为此使用的最佳集合是某种排序列表。这样,只需从排序列表中获取第一个元素,就可以有效地满足要求 #1。通过在列表中的正确位置插入一个新节点,可以有效地满足要求 #2。
但是SortedList
.Net 中的集合就像SortedDictionary
并且要求被排序的键是唯一的,这违反了要求 3。
.Net 中似乎没有满足这些要求的集合,主要是因为确实存在的自排序集合要求排序的键是唯一的。这是什么原因?我认为这不可能是疏忽。我在这里没有抓住什么?我可以找到关于此的类似问题,但它们通常涉及某人提出建议SortList
,然后意识到这不起作用,然后对话在没有标准解决方案的情况下淡出。至少如果有人会说“C# 中没有用于此任务的集合,您需要一起破解一些东西”,这将是一个答案。
List<Node>
每当添加新节点时使用常规并重新排序列表是否可以接受?似乎这不如将节点插入到正确的位置开始那样有效。也许这就是我应该做的?手动遍历列表,直到我自己找到插入新节点的位置?