搜索具有快速搜索和小尺寸的数据结构

时间:2011-03-13 17:42:21

标签: c# list serialization data-structures hashtable

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

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

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

1 个答案:

答案 0 :(得分:4)

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

它的实现使得它提供O(1)查找(或者文档说明,但我怀疑它实际上是一个摊销的O(1),因为它用Hashtables实现...)并且支持许多集合操作。

我不确定其序列化形式,但我会进一步调查。如果你真的想要它序列化到一个数组,你可以随时

var mySet = new HashSet<T>(new []{ 1, 2, 3, 3, 4, 5, 4, 5 });
Serialize(mySet.ToArray());

然后反序列化只是从序列化数组中创建一个HashSet。