我正在尝试通过 T 的两个属性对容器中类型 T 的数据进行排序。它可能有很多数据,所以我更希望在插入时进行排序。我已经研究了List
和SortedList
,但两者都没有提供我需要的功能。
C# 是否提供了一个容器,该容器允许对插入进行排序和对我的比较函数进行排序?我想避免插入后排序List.Sort
,并避免使用数据作为键和值的开销SortedList
。
我正在尝试通过 T 的两个属性对容器中类型 T 的数据进行排序。它可能有很多数据,所以我更希望在插入时进行排序。我已经研究了List
和SortedList
,但两者都没有提供我需要的功能。
C# 是否提供了一个容器,该容器允许对插入进行排序和对我的比较函数进行排序?我想避免插入后排序List.Sort
,并避免使用数据作为键和值的开销SortedList
。
如果您使用的是 .NET 4,则可以使用SortedSet
自定义的IComparer<T>
. 缺点是它不允许你有多个相等的元素。你需要那个吗?
我不清楚你为什么要对插入进行排序只是因为你有很多数据。在完成插入之前是否需要对其进行排序?如果不是,我希望最后的单一排序(通过List.Sort
)与即时排序一样有效。
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.