c# - 搜索速度快、体积小的数据结构

标签 c# list serialization data-structures hashtable

我正在搜索数据结构来存储唯一索引(整数)列表。对我来说最重要的功能是:
- 快速检查值是否存在于一组值中 - 就像在哈希表中一样
- 内存和序列化后的小尺寸 - 像数组
它当然应该支持添加、删除元素,但是这个操作的性能并不重要。

框架中是否有以这种方式工作的结构?或者我应该创建它?

使用示例: 我有用户类,在这个类中有几个(~20)各种数据列表。 (访问权限、特权、文件等)。我需要将用户数据存储在缓存中以便在回发期间快速访问 - 每次查询数据库都非常慢。整数是数据库中的索引,

最佳答案

我认为您正在寻找 HashSet http://msdn.microsoft.com/en-us/library/bb359438.aspx

它的实现是为了提供 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/

相关文章:

c# - 如何在 C# 中将列表中的项目添加到 AutoCAD 文件?

python - 打印没有转义字符的 unicode 字符列表

r - 在R列表中的每个元素中添加新值?

c++ - libpqxx 事务序列化和后果

c# - 表达式树序列化器

c# - SSL 数据读取和写入传输速率在服务器中有效管理

c# - 创建随机测试好吗?

c# - 如何在没有第三方库的情况下序列化对象+压缩然后解压+反序列化?

c# - WeakReference 太弱了?

python - 同时删除多个列表范围?