使用比较功能对插入进行排序

时间:2012-07-18 19:43:46

标签: c# sorting insert comparison

我正在尝试通过两个T的属性对容器中的类型T的数据进行排序。这可能是很多数据,所以我宁愿在插入时进行排序。我查看了ListSortedList,但两者都没有完全提供我需要的功能。

C#是否提供了一个容器,允许在插入和排序比较函数时进行排序?我想避免像List.Sort这样的帖子插入排序,并避免将数据用作SortedList的键和值的开销。

2 个答案:

答案 0 :(得分:6)

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

我不清楚为什么你想要对插入进行排序只是因为你有很多数据。在插入之前是否需要对它进行排序?如果没有,我希望在最后(通过List.Sort)进行单一排序,以便像现在这样排序。

答案 1 :(得分:2)

如果您希望始终保持相同的排序顺序,可以使用SortedList<K,V>SortedDictionary<K,V>并将IComparer<K>传递给构造函数。

如果您需要在同一容器上使用不同的排序顺序,则可以使用List<T>并将IComparer<T>传递给Sort方法。

由于您可能正在存储引用类型,因此我不会过分担心将项目用作键和值。您只是存储参考文献。

另一种选择是实现自己的二叉树结构。