需要:快速高效地存储一堆不区分大小写的字符串的 .Net 集合
我正在寻找一个简单的集合,它将以不区分大小写的方式存储一堆字符串。我至少需要一个 Contains()
和 Remove()
方法来查看某个字符串是否存在并删除该字符串。
我尝试过 List
但那个是区分大小写的。我需要可以使用不区分大小写的 Dictionary
,但这“感觉”像是浪费空间。对每个字符串执行 ToLower()
会浪费性能。
有谁知道我应该使用哪种.Net 集合?
I'm looking for a simple collection that will store a bunch of strings in a case insensitive way. I need at least a Contains()
and Remove()
method to see if a certain string is present and to remove that string.
I've tried List<string>
but that one is case sensitive. I need could use a case insensitive Dictionary<TKey, T>
, but that "feels" like a waste of space. Doing a ToLower()
on each string is a waste of performance.
Does anyone know what kind .Net collection I should use?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您应该使用
新的 HashSet(StringComparer.OrdinalIgnoreCase)
。请注意,这是一个无序集合。
You should use a
new HashSet<string>(StringComparer.OrdinalIgnoreCase)
.Note that this is an unordered set.
您可以使用
StringDictionary
< /a>.You could use a
StringDictionary
.今天有同样的问题需要解决。如果您可以包含 Linq,那么您的 List 将获得带有比较器的重载方法。
希望这有帮助:
马丁
Had the same problem to solve today. If you can include Linq, then your List gets overloaded methods with a comparer.
Hope this helps:
Martin
默认情况下,字典不区分大小写。但您可以实现自己的变体以使其不敏感。 (我可能是错的:D)
我对 Dictionary 也有同样的问题,但在尝试了很多 IEquality 实现之后,最后我用 LINQ 解决了问题。
希望这对将来的人有所帮助。
桑杰·扎尔克
By default Dictionary are not case in-sensitive. But you can implement your own variant to make it in-sensitive. (I might be wrong on this :D)
I had same issue with Dictionary but then after trying a lot of IEquality implementations, finally I settled the score with LINQ.
Hope this will help somebody in future.
Sanjay Zalke
编写您自己的
Contains()
和Remove()
方法,它们执行不区分大小写的比较。Write your own
Contains()
andRemove()
methods, which perform the case insensitve comparison.