用于快速键查找的Dictionary的替代方案?

pok*_*oke 6 .net c# vb.net data-structures

如果我处理了特定的值,我会遇到需要跟踪的情况.在这些情况下,我Dictionary(Of TKey, TValue)用来跟踪我处理的值.基本上,当处理每个值时,我将处理后的值作为键插入到字典中.当我想看看我是否已处理该值时,我使用该ContainsKey方法来查看该值是否存在于集合中.

这很好用,但我必须在键值对的值侧插入一些东西.我只想使用a List(Of T)但我希望得到Dictionary提供的哈希表查找的性能..Net中是否有更适合此目的的数据收集?

Jim*_*hel 16

我建议一个HashSet<T>.如果您需要知道密钥已经被使用,您可以输入密钥.

这也很简单:

if (myHashSet.Add(key))
{
    // item wasn't in the hash set, so process it.
}
Run Code Online (Sandbox Code Playgroud)

Add就像"添加,如果没有那里." true如果添加了该项,则返回.false如果项目已在集合中,则返回.

或者,您可以使用Contains测试,然后Add添加.

  • 这就是为什么我喜欢这个网站:我没有意识到HashSet在这个答案之前就已经存在了(我从1.0开始在.Net中编程,所以有时新东西会偷偷摸摸).现在,我有一个更好的方法来解决许多问题.谢谢! (3认同)