我正在尝试在C#中翻译字典中的项目。 我试过了:
Dictionary<double, int> dict = new Dictionary<double, int>();
...add itmes to it....
var v = dict.Reverse()
然而,dict.Reverse()给了我一种IEnumberable&gt;。我只是想知道如何将它变成一种字典?
提前致谢。
答案 0 :(得分:16)
<强>停止!强>
字典和哈希表和集合没有排序。
排序或更改订单绝对没有意义。
答案 1 :(得分:11)
字典不是有序数据结构。要使Reverse具有任何实际意义,您需要使用SortedDictionary。你可以通过创建一个带有Comparer的新副本来获得SortedDictionary的反向副本,该副本对原始进行相反的排序(参见constructor)。
var reversed = new SortedDictionary( original, new ReverseKeyComparer() );
请注意,ReverseKeyComparer
是该示例的虚构类。
另外 - 如果你将Dictionary等同于 map 或 hashtable ,你需要知道SortedDictionary有点用词不当。它使用二进制树实现(我认为是Red-Black),其算法复杂度不同于Dictionary的哈希表实现。请参阅各自文档页面的“备注”部分。如果性能至关重要,您可能需要考虑订购是否真正重要。
答案 2 :(得分:3)
如果您希望字典具有特定顺序,则应查看SortedDictionary。 见this article.