在我的申请中,我有SortedDictionary
。大多数时候,我在其中插入单个值 - 在这种情况下,据我所知,它需要使用Compare方法来确定新值应该添加到何处。
我只是想知道,是否有一些方法我可以从一个KeyValuePair<>[]
数组初始化这个SortedDictionary,而不会导致Compare方法运行。
问题是,有时候我确实有一个KeyValuePair<>[]
数组,它包含已排序的键,所以它可以在SortedDictionary
中转换而无需任何额外的排序。我知道编译器不知道我的集合是如何排序的,但是因为我确定它,是否有某种方法可以逃避比较?如果这个请求完全是废话,你能解释一下原因吗?
我想要的唯一原因是因为性能 - 在使用大型集合时,Compare方法需要一些时间才能完成。
答案 0 :(得分:1)
[...]据我所知编译器不知道我的收藏是 排序,[...]
排序不是编译时,而是运行时细节。
我认为这不是一个好主意。以下是不这样做的理由的总结:
在一天结束时,当您需要一个订单插入订单的集合时,您应该使用List<T>
,在您的情况下,您应该考虑{ {1}}。无论如何,这对你的情况不起作用。您希望提供已排序的序列作为已排序字典的来源,并且在构造时间之后添加新对时,让比较器在字典填充后工作。
我想说如果你需要一个排序的字典,它依赖于在构造时间给出的一对配对而且不能重新排序(因为它们已经被排序),那么你需要思考关于滚动你自己的List<KeyValuePair<TKey, TValue>>
实现来提供这样的功能......