代码之家  ›  专栏  ›  技术社区  ›  Garry Shutler

字典是否默认按键排序?

  •  11
  • Garry Shutler  · 技术社区  · 17 年前

    Dictionary<TKey, TValue> 在我的测试中,我有一些奇怪的,虽然有些可以理解的行为。

    无论顺序如何,我打电话时都会把词条加到字典里 Dictionary.Keys 密钥将按照指定的顺序返回 IComparable<T> 密钥类型的实现。

    这对我来说是好的,因为我无论如何都想按那个顺序得到它们,但我找不到任何地方指定它们应该并且将始终以这种方式返回。因此,我不知道是该依赖于它总是这样,还是依赖于它在网络上进行(潜在的冗余)排序 List<T>

    我能相信这种行为吗?

    2 回复  |  直到 17 年前
        1
  •  24
  •   JaredPar    17 年前

    你不能依赖这种行为。这只是一个巧合,可能是由于您的样本大小或GetHashCode实现。一旦向表中添加足够的项并强制进行足够的重新灰化,则不会对键进行排序。

    MSDN明确表示未指定键的顺序( http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)

        2
  •  16
  •   Keith    17 年前

    你在找什么 SortedDictionary <K,V> . 词典 <