【问题标题】:C# Data Structure Like Dictionary But Without A Value类似于字典但没有值的 C# 数据结构
【发布时间】:2010-11-24 17:27:30
【问题描述】:

C# 中是否有任何数据结构类似于字典,但只有键而没有值。我基本上想要一个整数列表,我可以快速查找并查看列表中是否有某个值。当然,就我目前的使用而言,List 不会导致任何性能问题,但它似乎与我的代码正在执行的意图不太相符。

【问题讨论】:

    标签: c# .net data-structures


    【解决方案1】:

    如果您的目标不是 .NET 3.5,Power Collections(开源)也提供了一个 Set 实现。

    【讨论】:

      【解决方案2】:

      如果 3.5 不是一个选项,您可以执行 Dictionary 之类的操作,然后简单地忽略该值。我在 2.0 中已经这样做了,我倾向于将值设置为与键相同。

      【讨论】:

        【解决方案3】:

        或者在值必须是唯一的情况下使用 SortedList

        【讨论】:

          【解决方案4】:

          是的,它被称为HashSet<T>,在 .NET 框架的 3.5 版中可用。如果您使用 .NET 2.0 版,则可以使用 Dictionary 并将值设置为 null

          【讨论】:

          • 请注意,Hashset 是在 .NET Framework 3.5 中引入的。如果您使用的是早期版本,我想使用 Dictionary 并将所有值设置为 null。
          • .NET 2.0 中的另一种方法是使用KeyedCollection,并将键提取器方法定义为值标识。
          • 太棒了,我什至不知道这个,我总是做一个 Dictionary 并且只是将 bool 设置为 true,我做的时候总觉得很脏
          • 关于“HashSet”的一个有趣点——为什么是“HashSet”?也就是说,为什么要在类的名称中提及类的实现细节——它使用散列表实现集合语义?答案:因为“Set”是 Visual Basic 的一个关键字,这意味着在 VB 中,任何时候你使用一个关键字,你都不得不说 Dim MySet as [Set] -- 哎呀。这非常容易出错;最好使用次优名称而不是产生令人困惑的错误。
          • 感谢您提供的信息,埃里克。在 pcampbell 引用的网页中对此进行了讨论,但很高兴听到确认 :-)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-15
          相关资源
          最近更新 更多