仅需校验键是否存在时,Dictionary的更优替代方案探讨
替代Dictionary<Key, bool>做键存在校验的高效方案
当你只需要校验键是否存在、不需要存储对应值时,**HashSet
核心优势
- 仅存储键本身,不附带冗余的value字段,在大数量场景(如10万条数据)下能显著节省内存
Contains方法的时间复杂度为O(1),性能和Dictionary.ContainsKey持平,不会牺牲查询效率- 提供和Dictionary类似的添加、删除、检查操作,学习成本低
替换后的代码示例
HashSet<int> idsToInclude = new HashSet<int>(); // 添加需要跟踪的ID idsToInclude.Add(5); idsToInclude.Add(2); idsToInclude.Add(3); // 后续检查ID是否存在 int id = 5; if (idsToInclude.Contains(id)) { // 执行包含时的业务逻辑 }
额外说明
如果需要从现有集合(如List
List<int> existingIds = new List<int> {5,2,3}; HashSet<int> idsToInclude = new HashSet<int>(existingIds);
内容的提问来源于stack exchange,提问作者Moe Sisko
相关产品推荐
相关产品推荐

