首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速在内存中搜索多个属性

快速在内存中搜索多个属性
EN

Stack Overflow用户
提问于 2013-02-01 17:25:50
回答 3查看 2K关注 0票数 1

我有一个内存对象列表(大约50000-100万),它们有6-7个属性(attributes)。

要求是过滤这个具有多个属性的内存中列表。线性搜索允许我在列表上执行O(N)搜索。有没有比泛型列表更好的数据结构更快的方法呢?

我使用的是C#.NET 4.0。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-01 17:47:27

我最好的建议是:

为每个必需的属性创建字典(将搜索分开,逐个查找每个必需的字典,然后选择list of minimal dictionaries)

  • When

  • Iterate list of minimal

如果属性值没有大量重复,这种方法将非常有用。但是,如果每个属性都有很多重复项,这种方法将非常糟糕。

Possible improvement:每个列表到字典中可能排序,之后按属性之一进行二进制搜索。

票数 0
EN

Stack Overflow用户

发布于 2013-10-14 01:35:01

你可以使用一个名为IndexedList的助手库,你可以使用这个库从http://indexedlist.codeplex.com/下载它,你可以在你对象的任何字段上添加索引,然后在你的列表中执行快速搜索。默认索引实现使用Dictionary来存储索引数据,您也可以更改它。我为自己的项目创建了这个库,然后将其作为新的开源项目发布。我将很高兴听到你对这个库的反馈。

票数 1
EN

Stack Overflow用户

发布于 2013-02-01 17:27:39

就在几秒钟前,我读到了这个:http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/

就搜索而言,SortedDictionary似乎是您最好的选择,但是由于您希望按多个属性进行搜索,因此如果您希望在搜索和插入大量数据之间取得良好的平衡,那么SortedList可能会以内存使用为代价产生更好的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14643146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档