6

我正在尝试通过 T 的两个属性对容器中类型 T 的数据进行排序。它可能有很多数据,所以我更希望在插入时进行排序。我已经研究了ListSortedList,但两者都没有提供我需要的功能。

C# 是否提供了一个容器,该容器允许对插入进行排序和对我的比较函数进行排序?我想避免插入后排序List.Sort,并避免使用数据作为键和值的开销SortedList

4

2 回答 2

6

如果您使用的是 .NET 4,则可以使用SortedSet自定义的IComparer<T>. 缺点是它不允许你有多个相等的元素。你需要那个吗?

我不清楚你为什么要对插入进行排序只是因为你有很多数据。在完成插入之前是否需要对其进行排序?如果不是,我希望最后的单一排序(通过List.Sort)与即时排序一样有效。

于 2012-07-18T19:46:14.513 回答
2

If you want to keep the same sorting order all the time, you can use SortedList<K,V> or SortedDictionary<K,V> and pass a IComparer<K> to the constructor.

If you need different sorting orders on the same container, you can use a List<T> and pass a IComparer<T> to the Sort method.

Since you are probably storing reference types, I would not worry too much about using the items as key as well as values. You are just storing the references.

Another option would be to implement your own binary-tree structure.

于 2012-07-18T19:58:27.030 回答