代码之家  ›  专栏  ›  技术社区  ›  WOPR

SkipList<T>与Dictionary<TKey,TValue>

  •  7
  • WOPR  · 技术社区  · 14 年前

    我有一个web应用程序,它对静态数据集执行非常复杂的Sql查询。

    哪种算法更好,字典还是SkipList?为什么?

    http://msdn.microsoft.com/en-us/library/ms379573%28VS.80%29.aspx#datastructures20_4_topic4

    3 回复  |  直到 14 年前
        1
  •  4
  •   Timwi    14 年前

    Dictionary ,当然。两个原因:

    • Dictionary<TKey, TValue> n )在跳过列表中。

    • 字典<TKey,TValue> 已经存在,并且经过了良好的测试和优化,而据我所知,跳过列表类并不存在,因此您必须实现自己的类,这需要努力使它正确并彻底测试它。

    两者的内存消耗大致相同(当然是相同的复杂性,即( )).

        2
  •  16
  •   IAbstract    8 年前

    SkipList<T> Dictionary<TKey,TValue> 跳过列表会使其项保持有序。如果您经常需要按顺序枚举项目,跳过列表是很好的,因为它可以按O(n)枚举。

    SortedSet<T> (或者更可能是 SortedDictionary<TKey, TValue>

    由于极不可能按顺序(或根本不按顺序)枚举缓存,因此不需要使用跳过列表(同样还有一个二叉树)。

        3
  •  1
  •   quiet_penguin    12 年前

    http://harisankar-krishnaswamy.blogspot.in/2012/04/skip-list-runtime-on-dictionay.html

    如果需要在数据结构中进行本地化,那么跳过列表可能很有用。例如,查找日期周围的航班等,但是,内存中有一个缓存,所以可以使用splay。哈希表和八叉树不提供本地化。