【问题标题】:Using a dictionary when the Key and the Value are the same?当 Key 和 Value 相同时使用字典?
【发布时间】:2009-03-09 13:18:46
【问题描述】:

我想在一个静态“集合”中保存大约 30 个字符串。然后,我需要根据该列表检查传入 Web 请求的路径。

我正在考虑使用具有相同值的 Key 和 Value 的 StringDictionary。然而,当我真正想要的是一个键查找时,这似乎很奇怪,所以我可以检查是否存在而不是查找要使用的值。

我什么都不担心吗?

拍拍

【问题讨论】:

  • 你在说什么语言?并不是说它与您的问题非常相关,而是您似乎使用了特定于语言的词汇。
  • StringDictionary 是 .NET,但似乎不在 Java 中

标签: .net collections string


【解决方案1】:

你使用什么语言?

.NET 支持 Hashset<>,这符合您的描述。

【讨论】:

  • 我使用的是 C#\.NET 3.5。我什至从未听说过 HashSet,谢谢
【解决方案2】:

如果您只需要一个键查找来检查是否存在,请改用 Set。

【讨论】:

    【解决方案3】:

    我同意 cmets 的观点,即 set 的用途 - 但在 3.5 版之前,.NET 也没有 set 类型。您可以轻松获得的最接近的(仅使用内置库而不是编写自己的集合)是值无关紧要的字典。

    但是,我想知道对于早于 3.5 的 .NET 中的 30 个字符串,List&lt;string&gt; 可能不是票。我们知道散列集非常适合 集,但是如果 你知道你使用的是一小部分字符串,一个简单的List&lt;string&gt;.Contains 调用会相当快。 String.Equals 可以检查开头的长度,然后检查每个字符,这样它可能会很快拒绝不匹配的内容。

    简而言之,如果您使用的是 .NET 3.5,我可能会使用 HashSet&lt;string&gt;,如果您使用的是 .NET 2.0 或 3.0,我可能会使用 List&lt;string&gt;,如果您使用的是 .NET 1.1,我可能会使用 ArrayList .那应该给出最简单的调用代码,并且性能可能很好。如果您认为它正在成为瓶颈,请使用探查器证明这一点。

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 2015-04-04
      • 2015-05-15
      • 2010-11-16
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多