当Key和Value相同时使用字典?

时间:2009-03-09 13:18:46

标签: .net collections string

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

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

我什么都不担心?

专利

3 个答案:

答案 0 :(得分:9)

您使用的是哪种语言?

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

答案 1 :(得分:4)

如果您只需要键查找来检查是否存在,请使用Set代替。

答案 2 :(得分:4)

我同意关于这是一个集合的评论 - 但是在版本3.5之前,.NET也没有拥有集合类型。您可以轻松获得的最接近的内容(仅使用内置库而不是编写自己的集合)是一个字典,其值与此无关。

但是,我想知道在早于3.5的.NET中只有30个字符串,List<string>可能不是故障单。我们知道hashsets对于 big 集合非常有效,但是如果你知道你使用了一小组字符串,那么简单的List<string>.Contains调用将是公平的快。 String.Equals可以检查开头的长度,然后检查每个字符,以便它可能会很快拒绝不匹配。

简而言之,如果您使用的是.NET 3.5,我可能会使用HashSet<string>,如果您使用的是.NET 2.0或3.0,我可能会使用List<string>,如果您使用的话,我可能使用ArrayList '使用.NET 1.1。这应该给出最简单的调用代码,性能可能会很好。如果您认为它已成为瓶颈,请使用分析器进行验证。