我想在静态“集合”中保存大约30个字符串。然后,我需要根据此列表检查传入Web请求的路径。
我在考虑使用带有Key的StringDictionary和具有相同值的Value。然而,当我真正想要的只是一个关键的查找时,它似乎很奇怪,所以我可以检查存在而不是查找要使用的值。
我什么都不担心?
专利
答案 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。这应该给出最简单的调用代码,性能可能会很好。如果您认为它已成为瓶颈,请使用分析器进行验证。