我正在搜索数据结构来存储唯一索引(整数)列表。对我来说最重要的功能是:
- 快速检查值是否存在于一组值中 - 就像在哈希表中一样
- 内存和序列化后的小尺寸 - 像数组
它当然应该支持添加、删除元素,但是这个操作的性能并不重要。
框架中是否有以这种方式工作的结构?或者我应该创建它?
使用示例: 我有用户类,在这个类中有几个(~20)各种数据列表。 (访问权限、特权、文件等)。我需要将用户数据存储在缓存中以便在回发期间快速访问 - 每次查询数据库都非常慢。整数是数据库中的索引,
最佳答案
我认为您正在寻找 HashSet
它的实现是为了提供 O(1) 查找(或者文档中说的,但我怀疑它真的是一个摊销的 O(1),因为它是用哈希表实现的......)并支持许多集合操作。
我不确定它的序列化形式,但我会进一步调查。如果您真的希望它序列化为一个数组,您总是可以这样做
var mySet = new HashSet<T>(new []{ 1, 2, 3, 3, 4, 5, 4, 5 });
Serialize(mySet.ToArray());
然后反序列化只需从序列化数组创建一个 HashSet。
关于c# - 搜索速度快、体积小的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291173/