C# 2.0 中的 HashSet 替换
我在我的项目中使用 List
,该列表包含数百个条目。我经常使用 List.Contains 方法,这会损害性能,我用字典替换了 List,但它导致了内存瓶颈,从而使性能变得更差。是否有更好的解决方案可以建议在列表中搜索?是否有 C# 2.0 中的 HashSet
的替代品或其他在内存和速度方面都更好的方式?
I using List<T>
in my project, this list contains hundreds of entries. I am using List.Contains method quite a lot and this is hurting performance, I replaced the List with dictionary but it resulted in memory bottleneck, thus made performance even worst. Is there a better solution that one can suggest for searching in List? Is there a replacement of HashSet<T>
in C# 2.0 or some other way that is better both memory and speed wise?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以使用
Dictionary
代替HashSet
。无论您添加值为 True 还是 False 的项目都是抛硬币,该值并不相关。它比
HashSet
更麻烦,而且不是很轻量级,但它肯定比List
更好。A
Dictionary<T,bool>
can be used in place of aHashSet<T>
. Whether you add items with a value of True or False is a coin toss, the value is not relevant.It's more cumbersome than a
HashSet<T>
, and not quite a light-weight, but it's certainly better than aList<T>
.如果您可以接受安装 .Net 3.5 框架的要求,则可以在 2.0 项目中使用 .Net 3.5 (System.Core.dll) 中的 HashSet。
请参阅此问题:在 C# 2.0 中使用 HashSet,兼容3.5
如果那不行,我会使用字典。
If you can live withthe requirement that .Net 3.5 framework be installed, you can use the HashSet from .Net 3.5 (System.Core.dll) in a 2.0 project.
See this question: Using HashSet in C# 2.0, compatible with 3.5
If that's a no go, I would use dictionary instead.