【发布时间】:2010-09-28 05:40:54
【问题描述】:
我需要根据它们的内容对一些对象进行排序(实际上是根据它们的属性之一,这不是关键,并且可能在不同的对象之间重复)。
.NET 提供了两个类(SortedDictionary 和SortedList),它们都是使用二叉树实现的。它们之间的唯一区别是
- SortedList 使用的内存少于 SortedDictionary。
- SortedDictionary 对未排序的数据具有更快的插入和删除操作,O(log n) 相对于 SortedList 的 O(n)。
- 如果列表是从排序数据一次性填充的,SortedList 比 SortedDictionary 快。
我可以使用List, 来实现我想要的,然后使用它的Sort() 方法和IComparer 的自定义实现,但这并不省时,因为我每次都需要对整个列表进行排序插入一个新对象,而一个好的 SortedList 只会在正确的位置插入项目。
我需要的是一个带有 RefreshPosition(int index) 的 SortedList 类,用于仅移动已更改(或插入)的对象,而不是在每次内部对象更改时重新使用整个列表。
我是否遗漏了一些明显的东西?
【问题讨论】:
-
.Net 的另一个主要 WTF。它有一些很棒的东西,但我很震惊他们没有这方面的课程,也没有你认为很常见的其他东西。
-
.NET 现在提供了一个
SortedSet<T>,但是这个still 不支持重复。他们一定有某种意识形态问题,支持带有重复的排序列表。
标签: c# .net sorting collections