我需要按照对象内容(实际上是根据它们的一个属性,该属性不是键,并且可能在不同的对象之间重复)对一些对象进行排序。
.NET提供了两个类(SortedDictionary和SortedList),并且两者都使用二叉树来实现。它们之间唯一的区别在于:
- SortedList使用的内存比SortedDictionary少。
- 对于未排序的数据,SortedDictionary具有更快的插入和删除操作,O(log n)而不是SortedList的O(n)。
- 如果列表一次性从排序数据中填充,则SortedList比SortedDictionary更快。
我可以使用List,然后使用其Sort()方法与自定义实现的IComparer来达到想要的效果,但它不是时间效率,因为每次插入新对象时我都需要对整个List进行排序,而好的SortedList只需将项目插入到正确的位置即可。
我需要一个带有RefreshPosition(int index)方法的SortedList类,以仅移动更改(或插入)的对象,而不是每次对象内部发生更改时重新排序整个列表。
我是否忽略了一些明显的东西?
SortedSet<T>
,但它仍然不支持重复项。他们必须有某种意识形态问题,不支持带重复项的排序列表。 - Roman Starkov