实现身份映射的最佳结构是什么?
尽管 DataTable 非常消耗内存,但如果对象集非常大,因为检索时间为 O(1),那么 DataTable 不是实现 IdentityMap 的最佳选择吗?
更新
如果我决定使用 IDictionary,我在检索对象时是否会牺牲速度?
Although a DataTable is a memory hog, wouldn't a DataTable be the best choice to implement and IdentityMap if the set of objects is very large since retrieval time is O(1)?
Update
If I decide to use IDictionary, do I sacrifice speed when retrieving my objects?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Dictionary<,>
、SortedList<,>
或SortedDictionary<,>
中的任何一个都是显而易见的选择 - 但请注意,排序会变成这里有一个问题...Dictionary<,>
不保证任何特定的顺序; 另外两个按键顺序而不是插入顺序。另请注意,字典与数据绑定的配合不太好。 最好创建类似
Collection
之类的东西,但封装一个用于查找的Dictionary<,>
。 当然,这一切都取决于场景。有关
SortedList<,>
等之间的性能等差异的更多信息,请参阅 这里。Any of
Dictionary<,>
,SortedList<,>
orSortedDictionary<,>
would be obvious choices - but note tha sorting becomes an issue here...Dictionary<,>
doesn't guarantee any particular order; the other two order by the keys rather than insertion order.Note also that dictionary won't play very nicely with data-binding. It might be preferable to create something like a
Collection<T>
, but encapsulate aDictionary<,>
for lookups. It all depends on the scenario, of course.More information on the performance etc differences between
SortedList<,>
etc can be found here.我更倾向于使用由 Dictionary支持的自定义类。 比数据表。 据推测,这将构建在数据访问层之上,该数据访问层可以使用 LINQ 或 DataTables 等来访问关系数据,但如果该对象在自定义映射中可用,那么您至少可以避免从关系数据中重新构建它。数据。
I'd be more inclined to use a custom class backed by a Dictionary<T,T> than a DataTable. Presumably this would be built on top of a data access layer that could use LINQ or DataTables, etc. to access the relational data, but if the object is available in the custom map, you would at least avoid having to reconstitute it from the relational data.